Autor Zpráva
BLR
Profil *
Ahoj,

$text = "<div><a>Odkaz</a>neco</div>dalsi</div>";
$neco = '@(<div>)(^[(</div>)]*)(</div>)@';

if(preg_match($neco, $text, $aa))
  echo 'Found<br>';


Tento kod by mel vyparsovat "<a>Odkaz</a>neco".

Problém bude asi tady: (^[(</div>)]*). Nevíte jak se to dá opravit ? Děkuju
Jan Tvrdík
Profil
$neco = '@<div>(.+?)</div>@';
BLR
Profil *
Jan Tvrdík
Kupodivu to funguje!

Jak tomu mám porozumět ?

. = libovolný znak
+ = Předchozí znak tam bude minimálně jednou
? = Předchozí znak tam bude maximálně jednou
Mastodont
Profil
BLR
Otazník v tomto případě znamená něco jiného, zapíná líné chování pluska:
http://pavucina.webmark.cz/11/regularni-vyrazy-php-5-modifikatory-kvantifikatory
BLR
Profil *
...minimální počet znaků, které jsou třeba, aby řetězec odpovídal regulárnímu výrazu.

Chápu, děkuji všem

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: