Düzenli ifade: bir twist ile, e-posta adresini değiştirme

0 Cevap php

Ben (daha iyi kullanılabilirlik için javascript ile bir e-posta olarak yeniden oluşturulur edilecek) olmayan bir hasat html biçimlendirme bunların yerine html bir demet aracılığıyla görünüyor ve herhangi bir e-posta adresi algılayan bir wordpress eklentisi geliştirdi.

Bu yüzden, örneğin, fonksiyon alır:

$content = "Hello john@doe.com. How are you today?";

ve çıkışlar:

$content = "Hello <span class="email">john(replace this parenthesis by @)example.com</span>. How are you today?";

Benim fonksiyonu iyi çalışır, ama okunabilir e-posta gibi ne olması gerektiğini belirtmek için bir seçenek vermek, şimdi istiyorum. Yani fonksiyonu alırsa:

$content = "Hello john@doe.com(John Doe). How are you today?";

yeni çıktı olacaktır:

$content = "Hello <span class="email" title="John Doe">john(replace this parenthesis by @)example.com</span>. How are you today?";

Yani regex bağlı parantez için bakmak gerekir, ve bulursa, içinde ne alıp bir html başlık özniteliği eklemek, parantez kaldırmak ve daha sonra e-posta ayrıştırmak.

Ben hemen hemen clueless bunun gerçekleşmesi için nasıl olarak, çünkü özelliği (: Bu parantez her zaman olmaz anlamında) opsiyonel doğası değilim.

Herhangi bir işaretçi yararlı olacaktır, burada benim geçerli kod:

function pep_replace_excerpt($content) {
     $addr_pattern = '/([A-Z0-9._%+-]+)@([A-Z0-9.-]+)\.([A-Z]{2,4})/i';
        preg_match_all($addr_pattern, $content, $addresses);
        $the_addrs = $addresses[0];
        for ($a = 0; $a < count($the_addrs); $a++) {
            $repaddr[$a] = preg_replace($addr_pattern, '<span class="email" title="$4">$1(replace this parenthesis by @)$2.$3</span>', $the_addrs[$a]);
        }
        $cc = str_replace($the_addrs, $repaddr, $content);
        return $cc;
}

0 Cevap