Link durch Sonderzeichen def.?

Sebigf

Erfahrenes Mitglied
Hallo zusammen!

Ich habe das Problem, dass beim versenden von Mails über ein Script die Mail-Adresse zwar ganz da steht aber der Link nicht komplett ist.

Beispiel: info@domain-home.de

info@domain <- ist noch als Link, der Rest aber nicht!

Liegt also am "-"! Was kann ich tun?

danke
 
Die Frage stellt sich hier, wie die E-Mail-Adressen als Verweise ausgezeichnet werden. Ich gehe mal davon aus, dass dies ein Skript übernimmt.
 
Wenn ich dich nun richtig verstanden habe, wird die Beispielzeichenkette „info@domain-home.de“ von einem Formular nicht komplett übermittelt. Das kann eigentlich nicht sein.
 
Nein, es wird eine HTML ! Email generiert und in dieser wird die adresse durch das "-" getrennt....aber nur beim link (mailto....).

danke
 
Und wie wird diese HTML-E-Mail generiert bzw, wie werden dort URLs durch Verweise ersetzt?
 
Code:
		$mail = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i", "<a href=\"$1\" target=\"_blank\">$1</A>", $mail);
		$mail = preg_replace("/(([\w\.]+))(@)([\w\.]+)\b/i", "<a href=\"mailto:$0\">$0</a>", $mail);
 
Zwei wirklich löcherige reguläre Ausdrücke. Am besten notierst du E-Mail-Adressen mit ihrem mailto-Schema und verwendest folgende reguläre Ausdrücke:
PHP:
<?php

	$url_patterns = array(
		// @link	http://www.foad.org/~abigail/Perl/url2.html
		'http'		=> "(?:https?://(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?)(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))*)(?:\?(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;:@&=])*))?)?)",
		'ftp'		=> "(?:ftp://(?:(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*)(?::(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[;?&=])*))?@)?(?:(?:(?:(?:(?:[a-zA-Z\d](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?)\.)*(?:[a-zA-Z](?:(?:[a-zA-Z\d]|-)*[a-zA-Z\d])?))|(?:(?:\d+)(?:\.(?:\d+)){3}))(?::(?:\d+))?))(?:/(?:(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*)(?:/(?:(?:(?:[a-zA-Z\d$\-_.+!*'(),]|(?:%[a-fA-F\d]{2}))|[?:@&=])*))*)(?:;type=[AIDaid])?)?)",
		'mailto'	=> "(?:mailto:(?:(?:[a-zA-Z\d$\-_.+!*'(),;/?:@&=]|(?:%[a-fA-F\d]{2}))+))"
	);
	$pattern = '/(' . addcslashes($url_patterns['http'], chr(0x2F)) . '|' . addcslashes($url_patterns['ftp'], chr(0x2F)) . '|' . addcslashes($url_patterns['mailto'], chr(0x2F)) . ')/';
	preg_replace($pattern, '<a href="$1">$1</a>', $string);

?>
 
MMh, irgendwie blicke ich nicht mehr durch :D ^^^^^

Kann man das nicht nur auf mailto: für meine Sachen anpassen, dass ich es verstehe ? ^^

Es werden ja eh nur mail-adds ausgeliefert.
 
Das Problem ist, dass ein mailto-URL ohne mailto-Präfix weitaus komplexer sein kann als ein http- oder ftp-URL. Daher ist es auch fast unmöglich diesen ohne mailto-Präfix aus einem beliebigen Text zu filtern.
 
Zurück