подібне до цього питання:
preg_match для вилучення mailto на якорі
але я намагаюся зробити глобальний рядок заміни в php, який буде конвертувати:
..href = "mailto: jeff@mycom.com"> Mailme <... (включаючи теги "a")
тільки "jeff@mycom.com" без тегів. Це має бути заміною, а не випискою.
Я використовую preg_replace, але, як і багато інших, я досить бідний на regex. Це реальний вираз, який я дійсно йду, але найкраща практика вітається, поки остаточне рішення стане зрозумілим.
Дякую!
Відповіді:
1 для відповіді № 1<?php
$html = "<a href="mailto:jeff@mycom.com">Mailme</a> (including the "a" tags)";
$html = preg_replace("~<a .*?href=["|"]mailto:(.*?)["|"].*?>.*?</a>~", "$1", $html);
echo $html;
0 для відповіді № 2
наступний регулярний вираз буде працювати для вас.
preg_replace(/<a .*?href=((?:"|"))mailto:(.*?)$1[^>]*>[^<]+</a>/i, "$2", $html);
використовуйте [^ <] + між початковим і кінцевим тегом, оскільки деякіможе статися, що розриви рядків відбуваються в html, тому. * буде невдало, [^ <] + це невдача в рідкісному випадку, коли (менше ніж знак) <з'являється в тезі. Використовується прапор "i" для заміни чутливості у випадку.