Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyrażenia regularne - problemy z: #, &, < i in.
Forum PHP.pl > Forum > Przedszkole
f#a#oo
Witam,
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:
  1. <!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:

  1. $f = file_get_contents('http://www.sagehill.net/livedtd/html40loose/HTMLsymbol.ent.html');
  2. $wyr = '/CDATA "&(.*);/';
  3.  
  4. $p = preg_match($wyr, $f, $m);
  5.  
  6. echo '<pre>';
  7. print_r($m);
  8. echo '</pre>';


A kiedy dodam # to już nie:

  1. $wyr = '/CDATA "&#(.*);/';



Dlaczego "& jest interpretowane jako amp; gdy go nie domykam? Przy:

  1. $wyr = '/CDATA "&(.*);/';


Wyświetla się:

Kod
Array
(
    [0] => CDATA "?
    [1] => amp;#402
)



Dlaczego działa:

  1. $wyr = '/#4.2/';


ale już nie:

  1. $wyr = '/.2/';



Dlaczego działa:
  1. $wyr = '/!ENTITY (\w+)/';


ale już nie:
  1. $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)?
cycofiasz
Spójrz w źródło tej strony a wątpliwości powinny zniknąć
Fifi209
Zobacz jakie znaki należy esceapować
http://pl.php.net/manual/pl/regexp.reference.meta.php

Co do # też jest odpowiedź tu:
http://pl.php.net/manual/pl/regexp.reference.delimiters.php
f#a#oo
Dziękuję za pomoc, już wszystko jasne smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.