webForumDet fria alternativet

preg_replace på epostadresser?

4 svar · 411 visningar · startad av Travoni

TravoniMedlem sedan okt. 20041 556 inlägg
#1

Jag skulle vilja skapa ett filter som gör en replace på epostadresser i länkar.

<a href="mailto:kalle@kalleanka.com">Kalle</a>
<a href="mailto:kalle@kalleanka.com">kalle@kalleanka.com</a>
<a class="email" href="mailto:kalle@kalleanka.com">kalle@kalleanka.com</a>
<a href="mailto:kalle@kalleanka.com" class="email" id="mylink">kalle@kalleanka.com</a>

Jag skulle önska att alla dessa varianter formaterades till:

<a class="email" href="javascript:mailto('kalle','kalleanka.com')">kalle[a]kalleanka.com</a>
eller
<a href="javascript:mailto('kalle','kalleanka.com')">Kalle</a>

Jag får inte till ett bra pattern till min funktion.

function emailScramble($string) {
$rep = preg_replace("/\<a(.*)href=\"mailto:([a-z0-9._-])+@([a-z0-9._-]+\.([a-z]{2,4}))\"\>(.+)\<\/a>/i", "<a href=\"javascript:mailto('$2','$3');\">$2[a]$3</a>", $string);
	return $rep;
}
voigtann1Medlem sedan juni 20019 519 inlägg
#2
function emailScramble($string) {
	$rep = preg_replace('%<a.*href="mailto:([a-z0-9._-]+)@([a-z0-9._-]+\.([a-z]{2,4}))".*>.+</a>%', '<a href="javascript:mailto(\'$1\',\'$2\')">$1[a]$2</a>', $string);
	return $rep;
}

Sen hade du flyttat ut + (vid mailto delen) så den tog bara det första tecknet.

Du behöver inte köra bla med (.*?) det räcker med .*? om du inte vill hämta den text (på <a(.*)... delen

TravoniMedlem sedan okt. 20041 556 inlägg
#3

Ok, denna verkar inte funka om det är en sträng med fler e-postadresser.

voigtann1Medlem sedan juni 20019 519 inlägg
#4

den tog allt som stod mellan a-elementen:

function emailScramble($string) {
	$rep = preg_replace('%<a.*?href="mailto:([a-z0-9._-]+)@([a-z0-9._-]+\.([a-z]{2,4}))"[^>]*?>.+?</a>%i', '<a href="javascript:mailto(\'$1\',\'$2\')">$1[a]$2</a>', $string);
	return $rep;
}

bör fungera bättre.

TravoniMedlem sedan okt. 20041 556 inlägg
#5

Just!

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)