replace - Syntax-Problem

poelchen1337

Mitglied
Hallo ich will URLS durch links ersetzen

habe mir hier etwas zusammengeschustert:

Code:
$pattern = '#(^|[^\"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm';
 $msg = ereg_replace($pattern,"\\1<a href=\\\2\\3\ 

target=_blank><u>\\2\\3</u></a>\\4",$_POST["Inhalt"] );

echo $_POST["Inhalt"];
echo $msg;

$ergebnis = "<table border=0><tr><td><img src=user/".$usercookie.".gif 

alt=".$usercookie."></td><td><b><small>".$datum." - ".$uhrzeit."</b> 

[".$usercookie."]</small><br>".$msg."</td></td></table>";



laut dem echo wird die variable $msg geschrieben
aber ohne die <html> tags.. bzw es wird kein link daraus.
wo hab ich was verbockt ?
mfg
Robert
 
Hi, hab deinen Fehler beim überfliegen leider nicht gefunden, aber was spricht denn dagegen das so zu lösen wie in dem Beispiel auf php.net ?
PHP:
$msg = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
                     "<a href=\"\\0\">\\0</a>", $_POST["Inhalt"]);
 
Gib doch bitte mal noch das Resultat davon mit, damit wir auch Testdaten haben

echo $_POST["Inhalt"];
 
so klappts super
siehe
http://poelchen1337.cwsurf.de/chat/index.php?user=tutorial

kann ich noch eine zweite replace aktion ausführen damit auch http://www.google.de als link erkannt wird und ein http:// davor gehängt wird ?

PHP:
	if(substr($_POST["Inhalt"], 0, 4) == "http") {
	
		$msg = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<a href=\"\\0\">\\0</a>", $_POST["Inhalt"]);
	}
	else {
	
		$msg = ereg_replace("[^<>[:space:]]+[[:alnum:]/]","<a href=\"http://\\0\">\\0</a>", $_POST["Inhalt"]);
	}

sollte als Workaround dienen.
Ich schätze mal das ist aber noch besser zu lösen ^^ ... hab mit *_replace noch nicht viel gemacht.
 
Code:
echo $_POST["Inhalt"];  =  Vielen dank jetzt funktioniert es wunderbar siehe link http://www.ft-treff.de


schau doch einfach mal auf http://poelchen1337.cwsurf.de/chat/index.php?user=tutorial
um zu sehen um was es überhaupt geht :D

mfg Robert


danke für den WWW vorschlag .. ich teste es gleich mal

leider klappt es so mit dem if satz nicht..

kann ich nicht einfach ein

Code:
$pattern = '#(^|[^\"=]{1})(www)([^\s<>]+)([\s\n<>]|$)#sm';
$msg = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
                     "<a href=http://\"\\0\">\\0</a>", $_POST["Inhalt"]);

dranhängen ?
 
Ich hab da eine schöne Funktion für dich gefunden ^^

PHP:
$url = $_POST["Inhalt"];
function hyperlink(&$url)
{
   $url = ereg_replace("[[:alpha:]]+://([-]*[.]?[[:alnum:]_/-?&%])*", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $url);
   $url = ereg_replace("(^| )(www([-]*[.]?[[:alnum:]_/-?&%])*)", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $url);
}
hyperlink($url);
echo $url;
 
Zuletzt bearbeitet:
Die $pattern kannst du gleich schmeissen, wenn du sie im ereg_replace nicht brauchst.

Ich hab jetzt den ganzen Thread drei mal durchgelesen, deine Seite besucht und verstehe nur ansatzweise was du überhaubt willst.

- wenn ein String mit http:// beginnt, soll daraus ein Liank mit <a href.... erstllt werden.
- bei ftp, mail etc nicht? oder was anderes? Und was?
- wenn ein Link mit www. beginnt, soll auch daraus ein Link entstehen.

Soweit richtig?
 

Neue Beiträge

Zurück