---
title: "preg_replace på epostadresser?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/183394-preg-replace-på-epostadresser"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Travoni"
published: "2010-05-03T12:43:30.000Z"
updated: "2010-05-03T15:24:17.000Z"
replies: 4
views: 414
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/183394-preg-replace-på-epostadresser"
---

# preg_replace på epostadresser?

## #1 — Travoni, 2010-05-03T12:43Z

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.

```php
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;
}
```

Permalänk: https://www.webforum.nu/p/183394

## #2 — voigtann1, 2010-05-03T13:00Z

```
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

Permalänk: https://www.webforum.nu/p/2234292

## #3 — Travoni, 2010-05-03T14:16Z

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

Permalänk: https://www.webforum.nu/p/2234296

## #4 — voigtann1, 2010-05-03T14:41Z

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.

Permalänk: https://www.webforum.nu/p/2234301

## #5 — Travoni, 2010-05-03T15:24Z

Just!

Permalänk: https://www.webforum.nu/p/2234306

---

Tråden på webben: https://www.webforum.nu/amne/php/183394-preg-replace-på-epostadresser
