Autor | Zpráva | ||
---|---|---|---|
Petr Fores Profil * |
#1 · Zasláno: 6. 2. 2007, 07:54:44
Dobrý den,
Mám problém s náhradou výrazů v textu. Výrazy samy o sobě jsou "jen" textem, tedy např. Dobra Voda. V textu je ale použito formátování, tedy stejný výraz je zde jako např. <i>Dobra <b>Voda</b></i> nebo <font size="+1">Dobra <u>Voda</u></font>. Když použiji fci str_replace($puvodni, $nahrada, $text), tak to nefunguje. Jedine co me napadlo, bylo pouziti strip_tags(), tedy v zapisu: str_replace($puvodni, $nahrada, strip_tags($text)), což sice funguje, ale ztratím formátování, což je problém.....nevíte někdo, jak tohle řešit? Script vypada takto: $nahrada = "<a href="url">Dobra Voda</a>"; $puvodni = "Dobra Voda"; $nahrad = str_replace($puvodni, $nahrada, strip_tags($text)); Problem je, ze ale ztratim formatovani v celem textu coz je spatne a kdyz nepouziji strip_tags(), tak se mi vyraz v textu nenajde... Petr. |
||
nightfish Profil |
#2 · Zasláno: 6. 2. 2007, 09:07:20
Petr Fores
proč by to nemělo fungovat ve verze bez strip_tags? snad jediný problém, který mě napadá, je to, že máte <i>aeiou</i> a chcete "i" nahradit za "d", pak to logicky vezme i v tagu ale to by mělo jít ošéfovat regulárními výrazy |
||
Petr Fores Profil * |
#3 · Zasláno: 6. 2. 2007, 10:02:17
Zkuste si to.....me to tedy nemeni:
$text = "<i>Dobra <b>Voda</b></i>"; $nahrada = "<a href=url>Dobra Voda</a>"; $puvodni = "Dobra Voda"; echo str_replace($puvodni, $nahrada, $text); |
||
Pavel Strejček Profil |
#4 · Zasláno: 6. 2. 2007, 16:27:11
Chyba je v tom, že chceš nahradit "Dobra Voda", ale v textu máš "Dobra <b>Voda".
|
||
Pavel Strejček Profil |
#5 · Zasláno: 6. 2. 2007, 16:47:33 · Upravil/a: Pavel Strejček
Ale to si asi nechtěl slyšet, takže spíš viz ty regulární výrazy. Mělo by to jít pomocí preg_replace(), ale regulární výraz bude dost komplikovaný. Chtělo by to vymezit všechny případy které mohou v tom kódu nastat.
|
||
Pavel Strejček Profil |
#6 · Zasláno: 6. 2. 2007, 16:49:40
případně preg_replace_callback()
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0