Portal > Foren > PHP > PHP-Programmierung > [url] BBCode
Antwort
 
Themen-Optionen
Alt 08.05.2006, 23:10 Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard [url] BBCode

Hi Leute

Ich habe mir für ein kelineres Script einen BBcode geschrieben, dieser basiert einfach auf str_replace. Nicht gerdae die Welt, reicht aber völlig aus. Nun stosse ich aber meine Grenzen, mit dem [url]-Tag. ich habe versucht mri das ganze einigermassen am phpBB BBCode System beizubringen, aber irgendwie habens die dann einfach zu komplex (ich will ja kein riesen Ding, nur eine einfach ersetzung). Hat jemand einen Tipp für mich? Wie löst ihr euere BBCodes?

Es grüsst und dankt, Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.05.2006, 23:17 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

da ich meine BBCode Klasse vor kurzem angefangen habe, kannst du die dir auch mal anschauen:
PHP-Code:
<?php
/**
 * Parsing BBCodes
 * @author martin@warrenfaith.de
 * @copyright Copyright 2006, Martin Breuer
 * 
 * @package Framework
 * @version 0.1.0
 */

class BBcode
{
    
/**
     * Definition of all BBCodes and their replacements
     */
    
private $bbcode = array(// Fett
                            
'/\[b\](.*)\[\/b\]/i' => '<b>\1</b>',
                            
// Kursiv
                            
'/\[i\](.*)\[\/i\]/i' => '<i>\1</i>',
                            
// Unterstrichen
                            
'/\[u\](.*)\[\/u\]/i' => '<u>\1</u>',
                            
// Durchgestrichen
                            
'/\[\-\](.*)\[\/\-\]/i' => '<strike>\1</strike>',
                            
// Code
                            
'/\[code\](.*)\[\/code\]/i' => '<div class="code">\1</div>',
                            
// Link
                            
'/\[url\=\"(.*)\"\](.*)\[\/url\]/i' => '<a href="\1" class="intextlink">\2</a>',
                            
// Image
                            
'/\[img\=\"(.*)\"\]/i' => '<img href="\1" border="0">',
                            );
    
    
/**
     * The loaded text which has to be parsed
     */
    
private $parseString '';
    
    
/**
     * Load the text which has to be parsed
     * 
     * @param string $string text which has to be parsed
     */
    
public function loadText($string)
    {
        
$this->parseString $string;
    }
    
    
/**
     * Parse the loaded text
     * 
     * @return string parsed text
     */
    
public function parseText()
    {
        foreach(
$this->bbcode as $search => $replace)
        {
            
$this->parseString preg_replace($search$replace$this->parseString);
        }
        return 
$this->parseString;
    }
}
?>
Wer fehler in englischen Kommentaren findet darf sie behalten meine grammatik ist grausam.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.05.2006, 23:18 Nach oben    #3
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

naja gibt da einige möglichkeiten, ne fertige klasse nehmen, sich aus phpbb nur den benötigten Teil rausziehen, regex lernen oder halt mal hier schauen:
http://php.de/forum/ftopic15351.html

mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.05.2006, 06:44 Nach oben    #4
Goldman.de
 
Benutzerbild von J33d3X
 
Registriert seit: 09.10.2005
Ort: Frankfurt am Main
Beiträge: 190
Standard

PHP-Code:
<?php

//....


   /**
    * - audruecke erkenenen und autom. in BBcode setzen
    *
    * @param string $text zu parsender string
    * @return string parsed string
    * @access public
    */
    
function setbbCode($text)
    {
        
$ret " ".$text;
        
$ret preg_replace("#([\n ])([a-z]+?:(//([^\t <\n\r]+)#i""\\1[url=\\2://\\3]\\3[/url]"$ret);
        
$ret preg_replace("#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^\t <\n\r]*)?)#i""\\1[url=http://www.\\2.\\3\\4]www.\\2.\\3\\4[/url]"$ret);
        
$ret preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)?[\w]+)#i""\\1[email]\\2@\\3[/email]"$ret);
        
$ret preg_replace("#([\n ])(ed2k://\|file\|(.*?)\|\d+\|\w+\|/?)#""\\1[url=\\2]\\3[/url]"$ret);
        
$ret preg_replace("#([\n ])(ed2k:(//)?\|server\|([\d.]+)\|(\d+)\|/?)#""\\1[url=\\2]\\4 at \\5 [/url]"$ret);
        
$ret substr($ret1);
        return(
$ret);
    }
    
   
/**
    * - Smilies finden und ersetzen
    * - BBcodes erkennen und ersetzen
    *
    * @param string $text zu parsender string
    * @return string parsed string
    * @access public
    */
    
function getbbCode($para)
    {
        global 
$objSQL$swburl$IMG;
        
        
$treffer=false;
        
$search "/(\[img\])(.*)(\.php)*(\[\/img\])/siU";
        
        
// check auf CrossSiteRequestForgeries
        
preg_match($search$para$treffer);
        if (
true==$treffer && is_array($treffer))
        {
            if (
'.php'==$treffer[3])
            {
                
$replace="replaced by system: do not use pictures with ending  ".$treffer[3];
                
$para=str_replace($treffer[0], $replace$para);
            }
        }
        
        
// BBcode Search Array
        
$search = array(
        
"/\[\/br\]/siU",
        
"/(\[)(url)(=)(['\"]?)(www\.)([^\"']*)(\\4)(\])(.*)(\[\/url\])/siU",
        
"/(\[)(url)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/url\])/siU",
        
"/(\[)(url)(\])(www\.)([^\"]*)(\[\/url\])/siU",
        
"/(\[)(url)(\])([^\"']*)(\[\/url\])/siU",
        
"/(\[)(email)(\])([^\"']*)(\[\/email\])/siU",
        
"/(\[)(email)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/email\])/siU",
        
"/(\[)(color)(=)([^\W]*)(\])(.*)(\[\/color\])/siU",
        
"/(\[)(color)(=\#)([^\W]*)(\])(.*)(\[\/color\])/siU",
        
"/(\[)(size)(=)([^\W]*)(\])(.*)(\[\/size\])/siU",
        
"/(\[)(tooltip)(=)(.*)(\])(.*)(\[\/tooltip\])/siU",
        
"/(\[)(style)(=)([^\W]*)(\])(.*)(\[\/style\])/siU",
        
"/(\[)(ol)(\])(\r\n)*([^\r\n]*)(\[\/ol\])/siU",
        
//"/(\[)(ol)(\])(\r\n)*(.*)(\[\/ol\])/siU",
        
"/(\[)(li)(\])(\r\n)*(.*)(\[\/li\])/siU",
        
"/(\[)(b)(\])(\r\n)*(.*)(\[\/b\])/siU",
        
"/(\[)(u)(\])(\r\n)*(.*)(\[\/u\])/siU",
        
"/(\[)(i)(\])(\r\n)*(.*)(\[\/i\])/siU",
        
"/(\[)(center)(\])(\r\n)*(.*)(\[\/center\])/siU",
        
"/(\[)(quote)(\])(\r\n)*(.*)(\[\/quote\])/siU",
        
"/(\[)(code)(\])(\r\n)*(.*)(\[\/code\])/siU",
        
"/(\[)(pre)(\])(\r\n)*(.*)(\[\/pre\])/siU",
        
"/(\[)(img)(\])(?!javascript:-)(\r\n)*([^\"']*)(\[\/img\])/siU",
        
"/(\[)(zitat)(=)(['\"]?)([^\"']*)(\\4])(.*)(\[\/zitat\])/siU",
        
"/about:/si");
        
        
// BBcode Replace Array
        
$replace = array(
        
"<br />",
        
"<a href=\"http://www.\\6\" target=\"_blank\">\\9</a>",
        
"<a href=\"\\5\" target=\"_blank\">\\7</a>",
        
"<a href=\"http://www.\\5\" target=\"_blank\">\\5</a>",
        
"<a href=\"\\4\" target=\"_blank\">\\4</a>",
        
"<a href=\"mailto:\\4\" target=\"_blank\">\\4</a>",
        
"<a href=\"mailto:\\5\" target=\"_blank\">\\7</a>",
        
"<span style=\"color:\\4\">\\6</span>",
        
"<span style=\"color:#\\4\">\\6</span>",
        
"<span style=\"font-size:\\4px\">\\6</span>",
        
"<span class=\"tooltip\" onmouseover=\"showInfo('\\4')\" onmouseout=\"hideInfo()\">\\6</span>",
        
"<span style=\"font-family:\\4\">\\6</span>",
        
"<ol>\\5</ol>",
        
"<li>\\5</li>",
        
"<strong>\\5</strong>",
        
"<u>\\5</u>",
        
"<em>\\5</em>",
        
"<center>\\5</center>",
        
"<blockquote style=\"width:98%;margin-left:2px;\">Comment by ER:<br /><hr style=\"border:1px solid red\" />\\5<br /><br /></blockquote>",
        
"<blockquote>Code:<br /><hr /><br />\\5<hr /></blockquote>",
        
"<pre>Code:<br />\\5</pre>",
        
"<img src=\"\\5\" alt=\"\" />",
        
"<blockquote>Zitat \\5 schrieb:<br /><hr /><br />\\7<hr /></blockquote>",
        
"About: ");
        
        
$para=preg_replace($search$replace$para);
        
$para=nl2br($para);
        return 
$para;
    }


//...

?>
__________________
Code:
eval('echo "'.gzinflate(base64_decode('8zI2TjGOAAA=')).'";'); 
J33d3X ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.05.2006, 09:09 Nach oben    #5
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.212
Standard

wenn es dir nur um den einen tag geht:
RegExp-Problem mit [url]-tag (BBCode)
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!

Geändert von Jann Hendrik (03.12.2007 um 18:51 Uhr). Grund: link an aktuelle Struktur angepasst
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 09.05.2006, 21:08 Nach oben    #6
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

HI

Danke für eure Zahlreichen Antworten, ich hab emich etwas in RegEx eingearbeitet und folgendes versucht:

PHP-Code:
 $final_text preg_replace("'\[url=((https?|ftp:(//|www)[a-z0-9\.äöüÄÖÜ]+\.[a-z]{2,4}((/|\?)[/a-z0-9~_&=\+\?\.-]*)?)\](.*)\[/url\]'i""<a href=\"\\1\\3\">\\4</a>",$text); 
Ich kriege jedoch einen Error:

Code:
Warning:  preg_replace() [function.preg-replace]: Compilation failed: unmatched parentheses at offset 86 in C:\Webserver\Apache2\htdocs\cevi\includes\functions.php on line 66 
Zeichen 86 ist das Komma bei {2,4}. Ehrlich gesagt, ich werde nicht schlau aus der Fehlermeldung. Ich sehe den Fehler einfach nicht...

Es grüsst und dankt, Garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 15:58 Nach oben    #7
Benutzer
 
Registriert seit: 31.12.2005
Beiträge: 90
Standard

http://img1.myimg.de/Zwischenablage02faf.gif
fällt dir was auf?
björn ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 16:09 Nach oben    #8
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Beim Überfliegen schien es mir so als wäre an der Stelle eine ) zu viel, oder am Anfang dann halt eine zu wenig..?
//edit
oh, seite nich refrehed und danach erst gepostet.. björn mein genau das was ich mein
__________________
http://www.ChrisDiary.De

Geändert von Chr!s (10.05.2006 um 16:15 Uhr).
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.05.2006, 17:21 Nach oben    #9
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

Hi

Danke, jetzt gibt es kein Error mehr Aber die ausgabe ist gleich null, also das Ich.de wird einfach durch nichts ersetzt

PHP-Code:
$final_text preg_replace("'\[url=((https?|ftp:(//|www)[a-z0-9\.äöüÄÖÜ]+\.[a-z]{2,4}((/|\?)[/a-z0-9~_&=\+\?\.-]*)?\](.*)\[/url\]'i""<a href=\"\\1\\2\">\\4</a>",$text); 
Es grüsst und dankt, garnele
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.05.2006, 17:52 Nach oben    #10
Erfahrener Benutzer
 
Benutzerbild von Garnele
 
Registriert seit: 16.09.2005
Ort: CH :-)
Beiträge: 123
Standard

Hi Leute

Ich bin nahe am Verzweifeln, seit Tagen suche ich den Fehler in meinem RegEx. Findet ihn jemand von euch? Es passiert einafch nichts, also es wird gar nicht erst ersetzt

PHP-Code:
preg_replace("'#\[url\=(.*)\](.*)\[\/url\]#i'"'<a href="\\1">\\2</a>',$text); 
Ersetzt werden soll so etwas zb:

Code:
[url=meinedomain.de]Ich[/url]
Es dankt und grüsst, Garnele

EDIT: Habs gefunden, '' zuviel :=)
__________________
Mein Forum zu Thema Garnelen und Wirbellose: http://www.garnelenforum.ch

Geändert von Jann Hendrik (29.05.2006 um 15:53 Uhr). Grund: ich habe mal den noparse-tag eingesetzt, damit klar wird, was du willst.
Garnele ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.05.2006, 15:42 Nach oben    #11
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Setze noch den Modifier U dran, damit der Ausdruck "ungreedy" (ungierig) ist.

Mehr dazu im Tutorial von CIX88.
[PHP] Regexp und die Gierigkeit
__________________
Gedanken aus Draht stricken einen Zaun.

Geändert von Jann Hendrik (03.12.2007 um 18:51 Uhr). Grund: link an aktuelle Struktur angepasst
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.12.2007, 18:52 Nach oben    #12
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.212
Standard

nur für alle, die über die Suche herauf gestossen sind:

[php] BBCode-Parser mit [noparse]-Tag selbst gemacht
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
html in bbcode umformen ? robo47 Gesuche 8 23.08.2008 11:50
preg_match -replace [url] DasMööp PHP-Programmierung 7 27.11.2006 18:02
Problem mit dem verlinken innerhalb von pdf-Dokumenten wegen der Nutzung von BBCode Jann Hendrik PHP-Programmierung 3 10.02.2006 16:27
RegExp-Problem mit [url]-tag (BBCode) Jann Hendrik PHP-Programmierung 4 03.07.2005 20:08
BBCode umschließen Tradon JavaScript und AJAX 1 11.05.2005 17:37


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:53 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44