Autor Zpráva
ph@tE
Profil *
Potřeboval bych pomoct s jedním regulárním výrazem. Mám ho takto:
$text = preg_replace("[\[B\](.*)\[/B\]]", "<strong>$1</strong>", $text);
Pokud je ale v proměnné text např. toto:
Tučný text něco netučně Tučný text
tak se to nahradí tímto:
<strong>Tučný text[/B] něco netučně Tučný text</strong>
A já bych potřeboval, aby se to nahradilo tímto:
<strong>Tučný text</strong> něco netučně <strong>Tučný text</strong>
Vůbec nevím jak udělat ten regulární výraz, aby nahradil už první výskyt
za </strong>...
ph@tE
Profil *
Ajajaj vůbec jsem si neuvědomil, že když sem napíšu "[B]", tak se to označí tučně, budu místo toho používat třeba [KL] a zopakuji svůj dotaz, aby se dal pochopit:
Potřeboval bych pomoct s jedním regulárním výrazem. Mám ho takto:
$text = preg_replace("[\[KL\](.*)\[/KL\]]", "<strong>$1</strong>", $text);
Pokud je ale v proměnné text např. toto:
[KL]Tučný text[/KL] něco netučně [KL]Tučný text[/KL]
tak se to nahradí tímto:
<strong>Tučný text[/KL] něco netučně [KL]Tučný text</strong>
A já bych potřeboval, aby se to nahradilo tímto:
<strong>Tučný text</strong> něco netučně <strong>Tučný text</strong>
Vůbec nevím jak udělat ten regulární výraz, aby nahradil už první výskyt [/KL] za </strong>...
Nox_lbc
Profil
str_replace(); to určitě taky zvládne ;-)

pokud chceš mermomocí reguláry tak u preg_replace nastav parametr limit na -1 ...

preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] )

pattern
The pattern to search for. It can be either a string or an array with strings.

replacement
The string or an array with strings to replace. If this parameter is a string and the pattern parameter is an array, all pattens will be replaced by that string. If both pattern and replacement parameters are arrays, each pattern will be replaced by the replacement counterpart. If there are less keys in the replacement array than in the pattern array, the excedent patterns will be replaced by an empty string.

subject
The string or an array with strings to search and replace.

limit
The maximum possible replacements for each pattern in each subject string. Defaults to -1 (no limit).

count
If specified, this variable will be filled with the number of replacements done.

ph@tE
Profil *
Nox_lbc
Když dám u preg_replace limit na -1, tak se chová pořád stejně - furt mění takto:
<strong>Tučný text[/KL] něco netučně [KL]Tučný text</strong>, místo takto:
<strong>Tučný text</strong> něco netučně <strong>Tučný text</strong>
Str_replace, použít nemůžu, protože nemá proměnné, teda aspoň myslím, jestli jo, tak řekněte. Místo "Tučný text" samozřejmě může být cokoliv jiného, já nevím, co tam bude...
Jak to tedy udělat?
tiso
Profil
Je na to nejaký prepínač chovania - teraz sa snaží nájsť čo najdlhší reťazec vyhovujúci výrazu, dá sa to zmeniť, hľadaj...
ph@tE
Profil *
A kde to mám jako hledat? Neušetřil bys mi trápení s hledáním a neřekl mi to rovnou? Prosím...
zdenek
Profil *
Zkus modifikátor "U" na konec výrazu, aby se změnilo chování z "nenasytného" na "líné".
nightfish
Profil
A kde to mám jako hledat?
co to třeba zkusit v manuálu?
[url=http://cz.php.net/preg_replace
]http://cz.php.net/preg_replace
[/url]
a vlevo odkazy Pattern syntax a Pattern modifiers ...
ph@tE
Profil *
Díky moc, modifikátor U pomohl.
ph@tE
Profil *
Programování je někdy šílený, člověk zkouší všechno možný i nemožný a nakonec zjistí, že stačilo přidat jedno písmenko:-)
tiso
Profil
Tak, tak...
Keby som to používal tak by som Ti to rovno napísal. Ale hľadať len aby som Ti napísal odpoveď, na to som už starý...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0