Проблема: авторы неправильно добавили адреса электронной почты в CMS, не указав текст «mailto:».Регулярное выражение для замены неработающих ссылок по электронной почте
Мне нужно регулярное выражение, если это возможно, для поиска и замены в хранимой таблице содержимого MySQL.
Случаи, мне нужно, чтобы справиться с являются:
- Нет 'электронной почты:'
- 'электронной почты:' не уже включен (правильный)
- веб-адрес не по электронной почте - не заменить
- несколько mailto: требуется (более одного в строке)
Пример строки будет: (разрывы строк добавлены для удобочитаемости)
<a href="[email protected]">[email protected]</a> and
<a href="mailto:[email protected]">[email protected]</a> and
<a href="http://www.test.com/">real web link</a>
second one to replace <a href="[email protected]">[email protected]</a>
Требуемая мощность будет:
<a href="mailto:[email protected]">[email protected]</a> and
<a href="mailto:[email protected]">[email protected]</a> and
<a href="http://www.test.com/">real web link</a>
second one to replace <a href="mailto:[email protected]">[email protected]</a>
То, что я пытался (в PHP) и вопросы:
pattern: /href="(.+?)(@)(.+?)(<\/a>)/iU
replacement: href="mailto:$1$2$3$4
Это добавление электронной почты: в правильном формате электронной почты: и актерская жадность за последние две ссылки.
Спасибо за любую помощь. Я огляделся, но у меня не хватило времени на это, так как это была неожиданная проблема с контентом.
Если вы в состоянии сэкономить время и дать выражение SQL, это будет еще лучше.
MySQL не имеет REGEXP заменить встроенный Есть определенные пользователем функции, но это похоже на свалку с последующей обработкой офф-лайн лучший вариант - см: [Stack Overflow обсуждение как к -do-a-regular-expression-replace-in-mysql] (http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql) – mjpg