Autor | Zpráva | ||
---|---|---|---|
laijk Profil |
Ahojte, mám na webe možnosť pridávanie bb kódov, <b>, <i> idú v poriadku, ale keď chcem niečo podčiarknúť tak mi podčiarkne od toho slova všetko až dokonca stránky, a za tým slovom napíše tag </u>
- vyzerá to tak ako keby som mal niekde na konci stránky navyše tag </u>, ale nieje, lebo mi to robí iba keď premením ten tag z bb kódov, ešte som skúsil zmazať všetky tagy <u> a </u>, ale aj tak to robí, neviem kdeby mohla byť chyba, môj kód na premieňanie na tagy: $bb = array("", "", "[u]", "[/u]", "", ""); // [b] a [i] tu nekukázalo neviem prečo $html = array("<b>", "</b>", "<u>", "</u>", "<i>", "</i>"); $zalomenyclanok = str_ireplace($bb, $html, $zalomenyclanok); |
||
Darker Profil |
Co takhle?
$text = "Pokus <b>tucne</b>, <i>kurziva</i> a <u>podtrzene</u>"; $allowed = array("b","u","i"); $allowed = implode("|",$allowed); $nahrazeny = preg_replace("~<($allowed)[^>]*>(.*?)</\\1>~i","[$1]$2[/$1]",$text); echo $text.PHP_EOL."<br>\n".$nahrazeny; Pokus [ b ]tucne[ /b ], [ i ]kurziva[ /i ] a [ u ]podtrzene[ /u ] Na podobné věci doporučuji tzv. regulární výrazy - těmi se nahrazují (hledají, porovnávají) nepřesně zadané řetězce. Může se hodit: Regulární výrazy - shrnutí syntaxe Zkoušečka reg. výrazů |
||
laijk Profil |
Darker:
To čo si napísal ide, ale ja mám v tej premennej $text nie html tagy, ale bb kody ([u]nieco[/u]), a tie potrebujem premeniť na tagy |
||
Darker Profil |
Jasně, tak potom opačně:
preg_replace("~\[($allowed)\](.*?)\[/\\1\]~i","<$1>$2</$1>",$text); |
||
laijk Profil |
#5 · Zasláno: 31. 8. 2012, 17:51:14
Darker:
toto ide, lenže ja mám nejaký probém s tým <u>, v DB je všetko tak ako má byť takže problém bude pri tom výpise, keď som to teraz vypísal podľa tvojho preg_replace tak mi vypísalo tučné(tučným), šikmé(šikmým) a [u]podčiarknuté[/u ] - to podčiarknuté presne ako som tu napísal, s tými hranatýmy zátvorkami (a aj s tou medzerou), v DB to je dobre, ja to vypisujem z DB ešte raz ten kód: $allowed = array("b","u","i"); $allowed = implode("|",$allowed); $nahrazeny = preg_replace("~\[($allowed)\](.*?)\[/\\1\]~i","<$1>$2</$1>",$text); echo $nahrazeny; |
||
Darker Profil |
#6 · Zasláno: 31. 8. 2012, 18:01:08
laijk:
„v DB to je dobre, ja to vypisujem z DB“ Mě kód funguje jak má, chyba je ve skriptu nad ním, pokud tedy doopravdy není v DB. |
||
Časová prodleva: 12 let
|
0