| | | | |
| |||||||
| Tutorials Hier findest Du Tutorials, welche nach und nach ein fertiges Script ergeben. Sehen, lernen & verstehen! |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| Gast
Beiträge: n/a
| hi, da oft gefragt wird, wie man BB-Code's realisieren kann, erkläre ich das hier mal mit den BB-Code's [b]Text[/b] und [url]http://phpfriend.de[/url] Den BB-Code [b]Text[/b] kann man mit preg_replace() "übersetzen": Code: $text = ("Ein fetter Text!");
$text = preg_replace("|\[b\](.*)\[/b\]|Uism","$1",$text);
[ und ] müssen jeweils mit einem Backslash \ markiert werden. (.*) ist ein Platzhalter für einen undefinierten Text (wie % bei MySQL-Abfragen). Die Pattern-Modifiers Uism: U: Durch den U-Modifier wird PHP nicht versuchen, soviele Chars einzufangen wie nur möglich bis es kein mögliches Ende des Patterns mehr findet. i: Es wird nicht zwischen GROSS- und klein-Buchstaben unterschieden s: Dadurch kann man bei (.*)-Wildcards auch mit \r\n usw. arbeiten m: Ohne m-Modifier würde es nur String-Anfang und -Ende geben. Diese werden über ^ bzw. $ angesprochen. Im MultiLine-Mode erkennt PHP NewLines und erweitert damt die Wirkung von ^ und $ .. Etwas schwieriger wird es, wenn man [URL]-Tags ersetzen will und dabei längere URL's gekürzt werden sollen, dafür wird preg_replace_callback(), create_function(), strlen() und substr() benötigt. preg_replace_callback() wird benötigt, weil die URL für den Link-Titel verändert werden soll, die Funktion ist ähnlich aufgebaut wie preg_replace(). Code: $text = preg_replace_callback("||Uism","",$text);
neu ist hier, dass an zweiter Stelle eine Funktion benötigt wird, die hier einfachheitshalber mit create_function() erstellt wurde. Code: $text = preg_replace_callback("||Uism",create_function('$matches',''),$text);
[0] ist der gesamte String des Callback's, ab [1] kommen dann die Zeichen in den Klammern, in diesem Fall ist also [1] http:// und [2] der unbekannte Text (.*). Mit strlen() prüfen wir, ob der String mehr als 30 Zeichen enthält, wenn dies der Fall ist, werden mit substr($matches[2],0,17) die ersten 17 Zeichen der URL ausgegeben und anschliessend mit substr($matches[2],-5) die letzten 5 Zeichen. Code: create_function(
'$matches',
'if (strlen($matches[2]) > 30) {
return "<a href=\"http://".$matches[2]."\" target=_blank>http://".substr($matches[2],0,17)."[...]".substr($matches[2],-5)."</a>";
}
')
Code: $text = ("Die phpfriend.de-Tutorials: http://phpfriend.de/forum/viewforum....r30zeichensind");
$text = preg_replace_callback("|\[url\](http://)(.*)\[/url\]|Uism",create_function(
'$matches',
'if (strlen($matches[2]) > 30) {
return "<a href=\"http://".$matches[2]."\" target=_blank>http://".substr($matches[2],0,17)."[...]".substr($matches[2],-5)."</a>";
} else {
return "<a href=\"http://".$matches[2]."\" target=_blank>http://".$matches[2]."</a>";
}
'),$text);
ist die Funktion highlight_string() hilfreich, highlight_string() kann dann in Kombination mit preg_replace_callback() angewendet werden.. _______________________________ Alle Angaben ohne Gewähr |
|
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 2.150
![]() | Zitat:
Callbacks sind eine feine Sache. create_function() ist auch ganz niedlich. Wenn man das ganze aber nicht mehr lesen kann, war es ein Griff ins Klo ^^ Erst nach dem Auseinanderpflücken, konnte ich sehen, was du da eigentlich treibst. Und ich bin mir jetzt mal nicht so ganz sicher, ob $matches[2] der richtige Index ist ... 1 wäre mein Kandidat ... Code: <?php
$text = preg_replace_callback('|\[url\](http://)(.*)\[/url\]|Uism', 'callBack_bbUrl', $text);
function callBack_bbUrl($matches) {
if (strlen($matches[2]) > 30) {
return 'http://'.substr($matches[2],0,17).'[...]'.substr($matches[2],-5).'';
} else {
return 'http://'.$matches[2].'';
}
}
?>
| |
| | |
| | ||
| Gast
Beiträge: n/a
| hi, Hab mir schon fast gedacht, dass ich die Modifiers falsch hab ;-) werd das mal anpassen.. Zitat:
ich benutze das Script in ähnlicher Form u.a. bei Phoogle und es funktioniert: [0] ist der gesamte String, der zurückgegeben wird beim callback, und danach werden ja einfach die klammern einzeln hinzugefügt, und somit ist [1]= http:// ; [2]=.* | |
|
| | |
| Gast
Beiträge: n/a
| Kennt ihr das??? Da hat jemand mal eine Parserklasse für BBCode geschrieben: http://www.christian-seiler.de/projekte/php/bbcode/ |
|
| | |
| Erfahrener Benutzer Registriert seit: 21.05.2008
Beiträge: 2.150
![]() | Diese beiden sind sogar erreichbar ... |
| | |
| | ||
| Gast
Beiträge: n/a
| Zitat:
| |
|
| | ||
| Gast
Beiträge: n/a
| Zitat:
http://test.php-help.info/bbcode-1/ (Quelltext wird angezeigt) Tobias hatte die fetten HTML Tags vergessen. | |
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Probleme mit PHP Code | HappyDieMuschel | PHP Tipps 2008 | 7 | 28.05.2008 06:34 |
| [Erledigt] PHP Code aus Datenbank | ayti | PHP Tipps 2008 | 8 | 26.05.2008 19:40 |
| Design und Code Trennen | TeazY | PHP Tipps 2008 | 29 | 21.05.2008 12:08 |
| Nur bestimmten Html Code zulassen? | litterauspirna | PHP Tipps 2008 | 5 | 29.04.2008 12:30 |
| einfacher Code zum Einbinden von "Inhaltsbereichen" | MaxDittmann | PHP-Fortgeschrittene | 6 | 01.10.2007 15:54 |
| PHP Code in Perl einbinden | PHP Tipps 2006 | 6 | 22.02.2006 08:03 | |
| PHP: Wie parst der Server den Code am schnellsten? | SvenLittkowski | PHP Tipps 2007 | 4 | 17.12.2005 10:58 |
| bb code in htm code wandeln | janni | PHP Tipps 2007 | 2 | 04.11.2005 22:36 |
| [Erledigt] JS Code in PHP Code?? | HTML, Usability und Barrierefreiheit | 12 | 08.08.2005 15:45 | |
| Seite 1/2/3..Code was haltet ihr davon? | Matthiasnet | PHP Tipps 2005-2 | 4 | 29.07.2005 20:29 |
| [Erledigt] Lesbarkeit von Code | Off-Topic Diskussionen | 6 | 14.07.2005 14:48 | |
| code aus db mit eval replacen | chief-thomson | PHP Tipps 2005-2 | 4 | 08.07.2005 15:33 |
| code verstecken | Skazi | PHP Tipps 2005 | 4 | 19.01.2005 13:51 |
| [Erledigt] bb code innerhalb von bb code geht nicht | PHP Tipps 2007 | 2 | 12.01.2005 17:29 | |
| Problem mit COde | PHP Tipps 2004 | 5 | 28.08.2004 16:04 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| bbcode sonderzeichen, &amp;, sonderzeichen bbcode, amp;amp;quot, & quot bedeutung, preg_replace_callback create_function, &amp;amp;amp;quot, http://www.php.de/tutorials/2281-bb-code-realisieren.html, quot bedeutung, &amp;&amp; bedeutung, ampersand in url string nicht ersetzen, bei schrift ", http://www.bbcode sonderzeichen bei url.net/, &quot bedeutung, uism tutorial, bbcode steuerzeichen, php mysql text ersetzten ampersand, amp;quot, % am bb als steuerzeichen, preg_replace_callback bbcode |

Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.