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

Sidebar

Home News Tutorials Workshops Tipps Artikel Gästebuch Sitemap Pascal Landau

Suche

Members

Forum Login Registrierung

Statistik

Statistikbereich
Jetzt1
Heute213
Gestern394
Gesamt2324719

BB Code - URL's umwandeln

Autor Flitze
Klicks 171930
Rating für BB Code
  8.6 von 10
Bewertungen187
Stand 11.06.2013
Keywords:
BBCode, BB-Code, BB Code mit Regex, HTML ersetzen, Links umwandeln, Links kürzen, Länge prüfen, http direkt umwandeln, www direkt umwandeln, URL's umwandeln, BBCode, PHP, URL

Amazon: PHP 5.3 und MySQL 5.1
Breadcrumb:
Tutorials » BB Code » BB Code - URL's umwandeln
Seite : 1 2 3 4 5 6 7 Bewerten
Article Wizard - deutscher Article Spinner

2. URL's umwandeln

[ADSENSE_LINE]
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 zur vorigen Seite:
BB Code
Weiter zur nächsten Seite:
BB Code - Wörter kürzen

»» Zurück zum Menu

Suchmaschinenoptimierung

Suchmaschinenoptimierung (SEO - Search Engine Optimization)

Ranking

Tutorials (13)

8.6
8.4
8

Workshops (3)

8.8
8.7
7.6

Tipps (12)

7.2
6.7
6.5

Artikel (32)

8.4
8
7.2

RSS Feeds

Full Feed Tutorials Workshops Tipps Artikel

Twitter

Follow me on Twitter

Partner & Links


Valid HTML 4.01 Transitional
Valid CSS
nach oben

Diese Seiten unterstützen MyWebsolution:
 
© MyWebsolution.de
2006-2024