Hallo Forumgemeinde,
heute Mittag habe ich bereits eine Anfrage gestellt und dabei gute Antworten erhalten. Jedoch hat die eine und andere funktionalität gefehlt.
Auf meiner Suche nach weiteren Lösungen bin ich auf die PHP-Mail_Archiv gestoßen. Hier wurde eine sehr gute Lösung mit vielen Funktionen gepostet.
- ersetzt alle www. durch http://www. ...
- ersetzt alle e-mail adressen duch mailto....
-usw.
Leider versuche ich schon seit Stunden vergebens, die Funktion mit PHP 4 auf meinem System zum Laufen zu bringen. Schon in der zweiten Zeile zeigt er bei mir die erste Fehlermeldung an.
Ich glaube das hängt mit dem 3D zusammen, was auch immer das heißen mag?
Für einen kleinen Tipp oder eine Lösungshilfe wäre ich sehr dankbar, dass ich das Kapitel "Links automatisch matchen" enldich beenden kann.
Danke und Grüße aus Braunschweig
Fabian
____________________________________________________
Markus Smigelskis php@phpcenter.de
Thu, 02 Aug 2001 00:18:24 +0200
Previous message: [php] Link als link ersetzen
Next message: [php] Link als link ersetzen
So sieht soweit ganz gut aus. Ist zwar nicht das schönste und
sauberste, scheint aber sauber zu funktionieren :-)
Wer Verbesserungen, nur immer her damit. Wenn man fit in Regulären
Ausdrücken wäre ließe sich das ganze bestimmt auch nocheinmal ne
nummer eleganter lösen.
Hänge jetzt einfach mal meine Version drann, die soweit ganz gut
funktioniert.
CU Markus
<?
function replace_uri($str) {
$pattern = 3D'#(^|[^"=3D]{1})(http://|mailto:)([^\s<>]+)([\s\n<>]|$)#sm';
return preg_replace($pattern,"\1<a href=3D"\2\3"><u>\2\3</u></a>\4",$str);
}
function sp($str, $searchTerm){
if (!is_string($searchTerm)) return 0;
if (is_array($searchTerm)) return 0;
if (!$searchTerm) return 0;
return strpos(chr(31).$str, $searchTerm);
}
function ssp($str, $searchTerm){
//this adds case insensitivity
return sp(strToLower($str), $searchTerm);
}
function add_space($str) {
$str =3D str_replace('. ', ' . ', $str);
$str =3D str_replace(', ', ' , ', $str);
$str =3D str_replace(".\n", " .\n", $str);
$str =3D str_replace(",\n", " ,\n", $str);
return $str;
}
function sub_space($str) {
$str =3D str_replace(' . ', '. ', $str);
$str =3D str_replace(' , ', ', ', $str);
$str =3D str_replace(" .\n", ".\n", $str);
$str =3D str_replace(" ,\n", ",\n", $str);
return $str;
}
function add_http($str) {
if (!ssp($str, 'www.')) return $str;
$str =3D str_replace('www.', '<A HREF="http://www.',">http://www.',</A> $str);
return str_replace('<A HREF="http://http://',">http://http://',</A> '<A HREF="http://',">http://',</A> $str);
}
function add_mailto($str){
if (!sp($str, '@')) return $str;
$ar =3D explode(' ', $str);
while(list($key, $val) =3D each($ar)) {
if (sp($val, '@') && !ssp($val, 'mailto')){
$ar[$key] =3D 'mailto:' . $val;
}
}
return implode(' ', $ar);
}
function sub_http($str) {
if (!ssp($str, '>http:')) return $str;
$str =3D str_replace('><A HREF="http://',">http://',</A> '>', $str);
return $str;
};
function sub_mailto($str) {
if (!ssp($str, '>mailto:')) return $str;
$str =3D str_replace('>mailto:', '>', $str);
return $str;
};
$inhalt =3D"www.xyz.de, www.zyx.com,\n <A HREF="mailto:info@xyz.de">info@xyz.de</A>\n adhoifhosd
<A HREF="http://www.xyz.de">http://www.xyz.de</A> sdhfio";
echo $inhalt."<hr>";
$inhalt =3D add_http($inhalt);
echo $inhalt."<hr>";
$inhalt =3D add_mailto($inhalt);
$inhalt =3D add_space($inhalt);
echo $inhalt."<hr>";
$inhalt =3D replace_uri($inhalt);
$inhalt =3D sub_space($inhalt);
echo $inhalt."<hr>";
$inhalt =3D sub_http($inhalt);
echo $inhalt."<hr>";
$inhalt =3D sub_mailto($inhalt);
echo $inhalt."<hr>";
?>