od paru dni męczę się z wyrażeniami regularnymi, a w zasadzie z jakimiś nieregularnymi wyjątkami. Może popełniam gdzieś głupi błąd - będę wdzięczny za zwrócenie uwagi.
Chcę wyłuskać nazwy znaków i ich kodowanie z pliku http://www.sagehill.net/livedtd/html40loos...symbol.ent.html, czyli wrzucić w tablicę Alpha oraz kod /&/#913; z linii:
<!ENTITY Alpha CDATA "?" -- greek capital letter alpha, U+0391 -->
Udało mi się to zrobić okrężnie, ale nie idzie zrobić tego bardziej prostym sposobem.
Dlaczego wyrażanie regularne działa w tej postaci:
$wyr = '/CDATA "&(.*);/';
A kiedy dodam # to już nie:
$wyr = '/CDATA "&#(.*);/';
Dlaczego "& jest interpretowane jako amp; gdy go nie domykam? Przy:
$wyr = '/CDATA "&(.*);/';
Wyświetla się:
Kod
Array
(
[0] => CDATA "?
[1] => amp;#402
)
(
[0] => CDATA "?
[1] => amp;#402
)
Dlaczego działa:
$wyr = '/#4.2/';
ale już nie:
$wyr = '/.2/';
Dlaczego działa:
$wyr = '/!ENTITY (\w+)/';
ale już nie:
$wyr = '/<!ENTITY (\w+)/';
Czy to są znaki zakazane? Nie pomaga nawet ich cytowanie (dodanie \). Nie znalazłem ich w wykazie znaków do cytowania. Jak mogę wobec tego znaleźć coś znajdującego się pomiędzy tymi znakami? Może to wina serwera (CBA)?