Autor Zpráva
Josífek
Profil *
Prosím, pomožte, potřeboval bych regulární výraz, který mi pomocí preg_match_all() vrátí z:
<k:ka attr="value" /> - vybrat: ka, attr="value"

<k:ka attr="value">text</k:ka> - vybrat: ka, attr="value, text

S tou první možností bych si poradil, ale s tou druhou nevím, jak spojit otevírací tag s uzavíracím
avaranger
Profil
<k:([a-z]*) ([a-z="]*)/>(.*)</k:([a-z]*)>

Takhle? Ale jistej si nejsem ^^
Josífek
Profil *
To mě napadlo, ale nezkontroluje to platnost značek: <k:neco a="v">j</k:necoJineho> by projit nemělo, potřeboval bych zkontrolovat to jméno uvozovacího tagu s ukončovacím
nightfish
Profil
regulární gramatiky (a tedy ani regulární výrazy) nejsou schopny přijmout takto definovaný jazyk (něco se opakuje, ale ty neumíš říct co přesně)
na kontrolu párování tagů budeš potřebovat něco jako zásobníkový automat - v tomto případě můžeš pomocí regulárních výrazů vysekat z textu všechny tagy, postupně je procházet a:
- každý otevírací tag uložit na zásobník
- ke každému uzavíracímu tagu zkontrolovat, je-li na vrcholu zásobníku příslušný otevírací tag (a případně si pamatovat i veškerý text od otevíracího tagu)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0