![]() |
Wieder mal phpBB und BBCodes
Hallo!
Sorry, dass ich nochmal was zu phpBB fragen muss, aber ich hoffe mal, dass das die letzte Frage dergleichen sein sollte, für längere Zeit... :oops: Ich will einfaches HTML ([b], [i], <u>, <s>) in BBCode umwandeln. Dazu habe ich mir ne kleine RegEx geschrieben:
Code:
Ist das unsicher, wenn ich das so mache? Bzw funktioniert das so überhaupt?
$text = preg_replace('/<(b|i|u|s)>(.*?)<\/\\1>/si', '[\\1:'.$uid.']\\2[/\\1:'.$uid.']', $text);
Grüße Faux |
Re: Wieder mal phpBB und BBCodes
Bei verschachtelten Tags oder falschem HTML-Code bekommst du ein Problem. Letzteres sollte wohl nocht tolerierbar sein ;) .
|
Re: Wieder mal phpBB und BBCodes
Zitat:
Zitat:
Grüße Faux |
Re: Wieder mal phpBB und BBCodes
Ich habe mir auch mal eine solche Funktion geschrieben. Da bekommst du keine Probleme mit verschachtelten Tags...
Allerdings ist die Optimierung mit der bbcode id die phpbb drin hat nicht drin. Aber das wäre ja leicht zu ergänzen...
Code:
EDIT:
function bbcode($text)
{ return preg_replace(Array ( '/\[strong\](.+?)\[\/strong\]/', '/\[i\](.+?)\[\/i\]/', '/\[b\](.+?)\[\/b\]/', '/\[u\](.+?)\[\/u\]/', '/\[(h[1-6])\](.+?)\[\/\1\]/', '/\[img\](.+?)\[\/img\]/', '/\[img="(.+)"\](.+?)\[\/img\]/', '/\[url=(.+?)\](.+?)\[\/url\]/', '/\[google\](.+?)\[\/google\]/e', '/(?<=\s)([a-zA-Z]+?:\/\/[^\s"]+?)(?=\s)/' ),Array ( '[b]\1[/b]', '[i]\1[/i]', '[b]\1[/b]', '<u>\1</u>', '<\1>\2</\1>', '[img]\1[/img]', '[img]\2[/img]', '[url="\1"]\2[/url]', '\'[url="http://www.google.de/search?q=\'.urlencode(\'\1\').\'"]\1[/url]\'', '[url="\1"]\1[/url]' ), $text); } Zitat:
EDIT2: Der google-tagt kann zu einer Sicherheitslücke führen, wenn du ' nicht escaped hast. |
Re: Wieder mal phpBB und BBCodes
@yankee: "bloedes" HTML kanns geben, weil er einfaches HTML in BBCodes umwandeln will. Du hast den umgekehrten Vorgang gepostet ;)
@faux: wenn du das im phpBB machst, bedenke dass htmlspecialchars() ausgefuehrt wird. Du darfst also nicht nach < und > suchen, sondern musst nach < und > suchen. Greetz alcaeus |
Re: Wieder mal phpBB und BBCodes
Zitat:
Code:
:zwinker:
<a>
Zitat:
|
Re: Wieder mal phpBB und BBCodes
Zitat:
@alcaeus: Mache ich nicht, trotzdem danke für den Hinweis. Habs so gelöst, funktioniert genau so wie ich will. Danke yankee für den Tipp mit dem Array im preg_replace:
Code:
Grüße
$text = preg_replace(array
( '/<(b)>(.*?)<\/\\1>/si', '/<(i)>(.*?)<\/\\1>/si', '/<(u)>(.*?)<\/\\1>/si' ), '[\\1:'.$uid.']\\2[/\\1:'.$uid.']', $text); Faux |
Re: Wieder mal phpBB und BBCodes
Zitat:
Code:
htmlspecialchars() brauchst du, damit kein HTML eingeschleusst werden kann. Frueher oder spaeter muss es rein, ich hoffe du machst es wenigstens nachher ;)
Dies ist ein Test. [url="index.php"]Klick mich mal an[/url]
Greetz alcaeus |
Re: Wieder mal phpBB und BBCodes
Zitat:
Code:
Desweiteren ists irrelevant, da kein User (oder Admin) Zugriff auf meine Funktion hat. Die Funktion ist rein für SQL-Error-Reporting da. ;)
$text = preg_replace(array
( '/<br *\/?>/si', // New lines '/<font +color=(\'|")(#FF0000)\\1.*?>(.*?)<\/font>/si', // Font color '/<(b)>(.*?)<\/\\1>/si', '/<(i)>(.*?)<\/\\1>/si', '/<(u)>(.*?)<\/\\1>/si' ), array( "\n", '[color=\\2:'.$uid.']\\3[/color:'.$uid.']', '[\\1:'.$uid.']\\2[/\\1:'.$uid.']' ), $text); [color=#FF0000]// Escape slashes $text = addslashes(htmlspecialchars(trim($text))); $title = addslashes(htmlspecialchars(trim($title)));[/color] Danke für die Aufmerksamkeit. :) Grüße Faux |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz