Regulární výraz pro preg_match_all
- fish
- Člen | 4
Zdravím,
dělám si na Nette (nebo spíš snažím se dělat) takové menší CMSko a
narazil jsem na problém, který nejsem nějak schopen vyřešit, i když už
nad tím pěknou chvíli sedím (co by taky člověk mohl dělat jiného ve
čtvrt na 3 ráno, že :) ) Ale k věci. Potřeboval bych nějak v textu
nalézt všechny výskyty řetězců ve formátu
{cmsSnippet 'jmenosnippetu'}
. Sestavil jsem si regulár
#\{cmsSnippet \'(?P<name>\w+)\'\}#
, a zdálo se, že to
funguje, ale preg_match_all
mi našlo vždy jen případný první
výskyt řetězce v textu, další už ne.
S regulárními výrazy moc zkušeností nemám, tak mě napadlo, že někdo povolanější tu chybu možná najde snáz.
Děkuju vám za pomoc.
- wdolek
- Člen | 331
nema to souvislost s „greedy“ / „ungreedy“ vyrazem? http://docstore.mik.ua/…/ch13_05.htm (jen tak hadam, v 5 rano)
- Mikulas Dite
- Člen | 756
Šel bych do
$res = Nette\String::matchAll($text, '~\{cmsSnippet\ \'(?P<name>[^\']+)\'}~xms');
zkusil sem, funguje.