| Autor | Zpráva | ||
|---|---|---|---|
| Majk2 Profil * |
#1 · Zasláno: 4. 3. 2008, 19:16:12
Ještě jednou zdravím :)
Potřeboval bych ještě jednu radu s tím jak nejlépe vyřešit příspěvky do guestbooku, chtěl bych aby byl kompatibilní s bbcode phpbbfora, takže dejme tomu že uživatel zapíše třeba bla bla [color=#000000]bla bla[/color] a editor by měl pak toto nahradit za bla bla <span style="color: #000000">bla bla</span> Jak toho nejlépe docílit? Na nahrazování sem vždy používal str_replace ale to je v tomto případě nešikovné, zkoušel sem kutit něco s reguléírními výrazy, ale je to pro mě španělská vesnice... jak by měl tedy vypadat výraz co nahradí [color=#000000]bla bla[/color] za <span style="color: #000000">bla bla</span> ? díky |
||
| Mastodont Profil |
#2 · Zasláno: 4. 3. 2008, 19:44:34
Jestli to je kompatibilní, tak by možná stačilo to najít ve zdrojáku phpbbfóra, ne?
|
||
| Jack Finger Profil |
#3 · Zasláno: 4. 3. 2008, 20:13:28
Majk2
používáme, osvědčené:
function BBColor($text){
$from = Array("/\[color=([a-zA-Z]+|#[0-9a-f]+)\]/i", "/\[\/color\]/i");
$to = Array("<span style=\"color: \\1;\">", "</span>");
$text = preg_replace($from, $to, $text);
$rozdil = eregi("<span>", $text) - eregi("</span>", $text);
if($rozdil > 0){
for($i = 0;$i <= $rozdil;$i++){
$text .= "</span>";
}
}
return $text;
}
|
||
| Majk2 Profil * |
#4 · Zasláno: 4. 3. 2008, 20:21:31
Jestli to dobře chápu tak první ([a-zA-Z]+|#[0-9a-f]+) se uloží do //1 kdyby tam byl další ([a-zA-Z]+|#[0-9a-f]+) tak //2 ?
|
||
| Jack Finger Profil |
#5 · Zasláno: 4. 3. 2008, 20:23:58
Majk2
ne, preg_replace() přepisuje všechny výskyty (v jakémsi "interním cyklu"). \\1 znamená "obsah první závorky" |
||
| Majk2 Profil * |
#6 · Zasláno: 6. 3. 2008, 11:28:03
Proč mi nefunguje toto?
$from = Array("\[B\]", "\[/B\]"); $to = Array("<B>", "</B>"); $text = preg_replace($from, $to, $text); tohle to vyhodí Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /srv/www/okinfo.cz/subdomains/sk/funkce.php on line 77 Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in /srv/www/okinfo.cz/subdomains/sk/funkce.php on line 77 myslel sem si že [ a ] musím vyrušit zpětným lomítkem ale asi to tak není, bez zpětného lomítka to taky nefunguje.. co mám špatně? |
||
| Jack Finger Profil |
#7 · Zasláno: 6. 3. 2008, 19:12:27
Majk2
$from = Array("/\[B\]/", "/\[/B\]/"); ? |
||
|
Časová prodleva: 18 let
|
|||
0