![]() |
[PHP] Hide BBCode parsen
Hi,
ich versuche grade einen Hide BBCode für mein Forum (php-fusion) einzurichten ... ich dachte mir da folgendes:
Code:
sollte den Text für alle außer Benutzername verbergen.
[hide=Benutzername]Text[/hide]
Code:
Problem:
$text = preg_replace('#\[hide=([\r\n]*)([^\s\'\";\+]*?)\](.*?)([\r\n]*)\[/hide\]#si', '\2', $text);
:arrow: Irgendwie scheint meine Suchmaske nicht so ganz zu funktionieren :arrow: Wie komme ich an den Wert von /1, der dann den Usernamen enthalten soll- |
Re: [PHP] Hide BBCode parsen
Gibts nicht ... andauernd verwende ich Zit anstatt Edit :wall:
|
Re: [PHP] Hide BBCode parsen
Wie wärs damit?
Code:
funktioniert auf jeden fall, ich weis nur nicht ob es auch alle Einschränkungen implementiert die du haben willst...
\[hide=([a-zA-Z0-9]*?)](.*)\[/hide\]
|
Re: [PHP] Hide BBCode parsen
Habs jetzt so gelöst, fals es jemanden interessiert:
Code:
Florian
global $userdata;
preg_match_all("#\[show=(.*?)\](.*?)\[/show\]#si", $text, $matches, PREG_PATTERN_ORDER); for($i=0; $i<count($matches[0]); $i++) { $hiddenquery = dbquery("SELECT post_author FROM ".DB_PREFIX."posts WHERE thread_id = '".$_GET['thread_id']."' AND post_author = '".$userdata['user_id']."'"); $hiddendata = dbarray($hiddenquery); if ((strtolower($userdata['user_name']) == strtolower($matches[1][$i])) or ($userdata['user_id'] == $hiddendata['post_author'])) { $text = str_replace($matches[0][$i], $matches[2][$i], $text); } else { if ($userdata['user_id'] == 1) { $text = str_replace($matches[0][$i], "<font color='red'>[" . $matches[1][$i] . ": " . $matches[2][$i] . "]</font>", $text); } else { $text = str_replace($matches[0][$i], '', $text); } } } |
Re: [PHP] Hide BBCode parsen
Zitat:
Das:
Code:
ist ein Beispiel wie du es nachen koenntest. Du solltest eigentlich nur das matchen, was auch in den Benutzernamen vorkommen kann. Alles zu matchen ist vollkommen fehl am Platz, wird aber trotzdem oft verwendet.
preg_match_all("#\[show=([^\[\]]*?)\](.*?)\[/show\]#si", $text, $matches, PREG_PATTERN_ORDER);
Greetz alcaeus |
Re: [PHP] Hide BBCode parsen
Okey, dann werde ich das anpassen ... ich kenne mich nicht so gut mit PHP aus ... was wird denn bei diese Abfrage alles gematcht: ([^\[\]]*?)
Florian |
Re: [PHP] Hide BBCode parsen
Alles ausser [ und ], die sollten schliesslich nicht im Benutzernamen vorkommen, denn selbst wenn sie das koennten, wuerdest du den Benutzernamen nie korrekt matchen koennen ;)
Du kannst das natuerlich noch weiter einschraenken, je nachdem was du alles im Benutzernamen erlaubst ;) Greetz alcaeus |
Re: [PHP] Hide BBCode parsen
Cool ... dankeschön.
Florian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:09 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