PHP Tutorials, PHP Forum, PHP Community and more ... MyWebsolution.de!

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt6
Heute37
Gestern305
Gesamt239430

Tutorials

Autor Flitze
Klicks 36043
Bewertungen 109
Rating 8.7
Stand 28.02.2009

Keywords
BB Code Tutorial, BBCode, BB-Code, BB Code mit Regex, BB Code erklärt, [php]-Tags, [code]-Tags, [img]-Tags, [url]-Tags, HTML ersetzen, HTML ausschalten, Text formatieren, Smilies ersetzen, Wörter kürzen, Links umwandeln, Links kürzen, Länge prüfen, http direkt umwandeln, www direkt umwandeln

Social Bookmarking:

BB Code

Seite : 1 2 3 4 5 6 7 Bewerten

2. URL's umwandeln


Beispiele (das Leerzeichen muss natürlich entfernt werden):

mittels Tags

[ URL=http://www.mywebsolution.de]Klick mich![ /URL] => Klick mich!

direkte Umwandlung

w ww.mywebsolution.de => www.mywebsolution.de
h ttp://mywebsolution.de => http://mywebsolution.de

So sieht's als Code aus
PHP:
<?php
$text 
preg_replace_callback("/\[url=(.*)\](.*)\[\/url\]/Usi"'linkLenght'$text);

// "reine" URLs umwandeln
$text preg_replace_callback('#(( |^)(((ftp|http|https|)://)|www.)\S+)#mi''linkLenght'$text);
?>


Also, ich fange mal bei der Umwandlung mittels Tags an. Dabei wird ein Hyperlink erzeugt, der als Ausgabenamen einen beliebigen Text haben kann. Das Suchmusterprinzip ist das gleiche wie zuvor, aber jetzt verwende ich nicht preg_replace sondern preg_replace_callback. Durch diese Funktion kann ich das gefundene Konstrukt noch bearbeiten. Das mache ich, weil sehr lange URL's unschön aussehen und ich diese durch eine Funktion kürzen will.

Beispiel

http://www.EinLangerLinkMitVielen.de?Parametern=1&Parametern=2&section=news&id=23&dolor=murda&lorem=ipsumgsd

=>
http://www.EinLangerLinkMitVielen.de?Parametern=1&Parametern=2&section=news&id=2...umgsd

Dazu brauche ich eine Funktion, die das gefundene Konstrukt überprüft und gegebenenfalls ändert. Dieser Funktion habe ich den Namen linkLenght gegeben. Sie sieht folgendermaßen aus

PHP:
<?php
    
// Prüft die Linklänge und passt sie gegebenenfalls an
    // wird für preg_replace_callback definiert
    
function linkLenght($treffer)
    {
        
// $treffer[1] ist die URL
        
$url trim($treffer[1]);
        if(
substr($url,0,7)!= 'http://')
                
$url "http://".$url;
        
// $treffer[2] ist der Ausgabename
        // wurde kein Name angegeben, wird die URL als Name gewählt
        
if(strlen(trim($treffer[2]))!=0)
            
$linkname $treffer[2];
        else
            
$linkname $treffer[1];
        
// legt eine maximale Länge von 50 Zeichen fest
        // Ausnahme bei [img]-Tags
        
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]'))
            
$linkname substr($linkname045-3)."...".substr($linkname, -5);
        
// Rückgabelink
        
$ergebnis "<a href=\"".$url."\" target=\"_blank\">".$linkname."</a>";
        return 
$ergebnis;
    }
?>


Der Parameter $treffer ist ein Array, dessen Elemente den gefundenen Konstrukten entsprechen.
$treffer[0] entspricht also \\0 bzw. dem gesamten Konstrukt
$treffer[1] entspricht \\1 bzw. dem 1. Klammerpaar
$treffer[2] entspricht \\2 bzw. dem 2. Klammerpaar
...

Wie das String kürzen funktioniert, sollte verständlich sein, ansonsten schaut einfach nach den entsprechenden Funktionen im Manual. Was
PHP:
<?php
AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]'))
?>

bedeutet, hängt mit den [ img]-Tags zum Einfügen von Bildern als Links zusammen. Wenn man nämlich folgenden Link als Bild erstellen will [ URL=www.mywebsolution.de][ IMG]http://www.mywebsolution.de/forum/pics/buttons/quote.gif [ /IMG][ /URL], dann wird die Adresse des Bildes als Anzeigename des Links erkannt. Dies Adresse hat mehr als 50 Zeichen und würde deshalb gekürzt werden, wodurch die Link-Adresse ungültig wird und das Bild nicht angezeigt werden kann. Deshalb muss diese kleine "Ausnahmeregel" formuliert werden.

Der Rückgabewert der Funktion ist der Ersatztext, durch den das Suchmuster ersetzt wird.

PHP:
<?php
$ergebnis 
"<a href=\"".$url."\" target=\"_blank\">".$linkname."</a>";
return 
$ergebnis;
?>


Das direkte Umwandeln ist im Prinzip nichts anderes. Nur das Suchmuster ist etwas komplexer aufgebaut.
PHP:
<?php
// "reine" URLs umwandeln
 
"#( ( |^)         (((ftp|http|https|)://)|www.)  \S+    ) #mi"
/*|     |                     |                    |        |  
  |  Zeilenanfang oder        |      Alle Nicht-Whitespaces |        
  |  Leerzeichen              |      und min. 1 Zeichen     |  
Delimiter            muss ftp:// oder http://            Delimiter
                     oder http:// oder www. enthalten    und Modifier
*/
?>
« Zurück Weiter »

»» Zurück zum Menu

Ranking

Tutorials (9)

Besucherstatistik8.7
BB Code8.7
Dateien in PHP üb...8.4

Workshops (3)

Sessions in PHP8.8
Loginsystem8.4
Bildergalerie7.1

Tipps (9)

Diagrammklasse9.5
Verbindung zur My...9
in_array für Java...8.7

Artikel (12)

WasserbettenGuerilla10
Linkbuilding bzw....8.4
Geld im Internet ...7.8

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Polen Portal Subdomain gratis
 
 
© MyWebsolution.de
2006-2008