Autor Zpráva
laijk
Profil
Zdravím, moje bb kody premieňam takto:

$allowed = array("b","u","i");
$allowed = implode("|",$allowed);
$blog = preg_replace("~\[($allowed)\](.*?)\[/\\1\]~i","<$1>$2</$1>",$blog);

-neviem ako mám pridať tag [url] - chcel by som to presne takto ako je to tu na fóre, že užívateľ bude môcť pridať odkaz na stránku, ale aj názov toho linku (url)
Darker
Profil
Aktuální systém vlastnosti elementů maže, protože nepředpokládám, že máš v plánu tvořit více elementů s vlastností udělal bych na to regulární výraz zvlášť.
$text = preg_replace("~\[url=((ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-%u200C%u200B\.\?\,'\/\\\ &amp;%\$#_]*))\](.*?)\[/url\]~i","<a href=\"$1\">$9</a>",$text);
laijk
Profil
Darker:
ahoj, s tým mojím preg replace si mi tuším pomohol tiež ty, mne to nejako nejde :) tak ako to mám teraz spraviť aby som to mal jednoduché, aj s tými predošlími tagmi
Darker
Profil
laijk:
tak ako to mám teraz spraviť aby som to mal jednoduché
Jednodušší mě nenapadá. To co jsem ti poslal jsem na počítači otestoval a funguje to.
Pokud si chceš nechat web hacknout stačí:
$text = preg_replace("~\[url=([^\]]+)\](.*?)\[/url\]~i","<a href=\"$1\">$2</a>",$text);
DarkMeni
Profil
Darker:
Pokud si chceš nechat web hacknout stačí:
Proč hacknout?
$text = 'T[u]u[/u]čně... Testovací link... A normální písmo...';
$text = preg_replace('/\[(b|i|u)\](.*?)\[\/\\1\]/i', '<$1>$2</$1>', htmlspecialchars($text));
echo preg_replace('/\[url=(?!javascript:)(.*?)\](.*?)\[\/url\]/', '<a href="$1">$2</a>', $text);
//Výstup: <b>Tučně...</b> <a href="http://testovaci_link...&quot;onmouseover=&quot;alert('Baf!');&quot;">Testovací l<i>i</i>nk...</a> A normální písmo...
I když si to s vnořenýma bb z nějakýho důvodu neporadí.
Edit: Tak fórum si to tu už upravuje, takže nemůžu ukázat příklad, ale bylo tam něco jako:
[b*]T[i*]u[/i*]čně...[/b*] [url=http://testovaci_link..."onmouseover="alert(\'Baf!\');"*]Testovací l[i*]i[/i*]nk...[/url*] A normální písmo...
Bez hvězdiček na konci bb značky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: