Autor | Zpráva | ||
---|---|---|---|
xlifer Profil |
Jak načíst všechny uzavřené slova do [zacatek]slovo[konec] z textu do array pole $out ?
$text = "Sobotní požár slovenského [zacatek]stredovekého[konec] hradu Krásna Horka mají nejspíš na svedomí [zacatek]chlapci[konec] ve veku 11 a 12 let. Pod hradem si chteli zapálit [zacatek]cigaretu[konec], vzplála ale tráva a rozlehlá louka postupnì vyhorela až k hradu. Poté vzplála budova. V [zacatek]sobotu[konec] dostali hasici ohen pod kotrolu, v nedeli se ale [zacatek]požár[konec] na nekolika místech opet rozhorel."; preg_match_all("~\[zacatek\](.*)\[konec\]~i", $text, $out); echo print_r($out); |
||
Keeehi Profil |
preg_match_all('~\[zacatek\](.*?)\[konec\]~', $text, $out); |
||
xlifer Profil |
#3 · Zasláno: 11. 3. 2012, 22:51:14
Keeehi:
Díky tohle funguje, ale nechápu proč nestačí .* když tečka je cokoliv a hvězdička kolikrát chci? Nebo se pletu? A ješte dotaz, zda je možné array pole omezit pouze na výběr uzavřených slov. Teď se vlastně ukládá do array 0 -> celý uzavřený tvar a 1 -> slovo ? |
||
Keeehi Profil |
#4 · Zasláno: 11. 3. 2012, 22:59:44
xlifer:
* je sama o sobě "žravá" -> snaží se vytvořit co nejdelší řetězec. Tudíž, pokud je v textu 2x [konec], zastaví se to až na tom druhém, protože se tím vytvoří delší řetězec. naproti tomu otazníkem za hvězdičkou (resp. modifikátorem U) tuto vlastnost obrátíme a od tak se hvězdička snaží vytvořit co nejkratší řetězec přesto však odpovídající tomu pravidlu. Proto se zastaví už na prvním výskytu. Druhá otázka - ne Jediné, co se s tím dá udělat je to 2rozměrné pole otočit o 90 stupňů, ale to je tak vše. |
||
Časová prodleva: 11 let
|
0