PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: URL zu Link machen....


MajorInSky
2003-07-24, 03:28:09
Kipp gleich um... Kriegs nicht hin...

Also...
Hab den String $Beitrag. Falls im String http://www. (soll heißen "Anzeichen" auf eine URL) vorkommt, soll vor diesen substring <a href="$substring"> und nach .de/.com - oder was auch immer - </a>!...

Mit ereg_replace() pack ichs irgendwie nicht, weil ich keine Variable für den Substring hab.

Aqualon
2003-07-24, 08:57:10
//String, der nach URLs untersucht wird
$Beitrag="Dies ist ein Beitrag von http://forum-3dcenter.de zum Thema URL ersetzen";
//Position des ersten Vorkommens von http:// ermitteln
$url_anfang=strpos($Beitrag,"http://");
//Text vor der URL wegschneiden
$tmp_Beitrag=substr($Beitrag,$url_anfang);
//Position des Leerzeichens nach der URL ermitteln
$url_ende=strpos($tmp_Beitrag," ");
//URL auslesen
$tmp_URL=substr($Beitrag,$url_anfang,$url_ende);
//URL mit Link ergänzen
$URL="<a href=".$tmp_URL.">".$tmp_URL."</a>";
//verlinkte URL in Beitrag einfügen
$Beitrag_URL=substr_replace($Beitrag, $URL, $url_anfang, $url_ende);


Damit klappt immerhin eine Ersetzung sofern die URL mit http:// anfängt. Für die Ersetzung mehrerer URLs in einem String hab ich jetzt keine Zeit, aber vielleicht hilft dir das ja schon weiter.

Aqua

JTHawK
2003-07-24, 10:47:23
//Position des ersten Vorkommens von http:// ermitteln
$url_anfang=strpos($Beitrag," http://");

und

//URL mit Link ergänzen
$URL=" <a href=".$tmp_URL.">".$tmp_URL."</a>";


Mit dieser kleinen Modifikation sollte es auch mit mehreren Links in einem String funktionieren.

Vorrausgesetzt vor dem "http://" ist IMMER ein Leerzeichen.

Dieses Forum macht das übrigens ähnlich.

Aqualon
2003-07-25, 09:29:45
Hab das Skript von oben erweitert. Jetzt werden alle URLs in einem String, die mit http:// beginnen ersetzt.


//zu untersuchender String
$Beitrag="http://www.3dcenter.de : Dies ist ein Beitrag von http://forum-3dcenter.de zum Thema URL ersetzen sponsored by http://www.php.net";

//URL direkt am Anfang ersetzen

if(substr($Beitrag,0,7)=="http://")
{$url_anfang=0;
$url_ende=strpos($Beitrag," ");
$tmp_URL=substr($Beitrag,$url_anfang,$url_ende);
$URL='<a href="'.trim($tmp_URL).'">'.trim($tmp_URL).'</a>';
$Beitrag=substr_replace($Beitrag, $URL, $url_anfang, $url_ende);
}

unset($url_anfang);

//Schleife zum Ersetzen der restlichen URLs

while($url_anfang!="0")
{

$url_anfang=strpos($Beitrag," http://");
if($url_anfang>"0")
{
$tmp_Beitrag=trim(substr($Beitrag,$url_anfang));
$url_ende=strpos($tmp_Beitrag," ");
//Nötig bei URL am Ende des Strings
if($url_ende=="0")
{$url_ende=strlen($Beitrag);
}
$tmp_URL=substr($Beitrag,$url_anfang,$url_ende+1);
$URL='<a href="'.trim($tmp_URL).'">'.trim($tmp_URL).'</a> ';
$Beitrag=substr_replace($Beitrag, $URL, $url_anfang+1, $url_ende+1);
}
}
echo($Beitrag);


Natürlich könnte man das Skript noch erweitern und ich habs auch nicht geschafft die Ersetzung der URL direkt am Anfang innerhalb der Schleife zu erledigen. Wer also Tips dazu hat, immer her damit!

Aqua