#php #preg-replace
#php #preg-заменить
Вопрос:
У меня есть строка php
echo $this->contact->email_to
Это выводит следующий HTML
<a href="mailto:me@mymail.com">me@mymail.com</a>
Я хочу, чтобы он выводил следующий HTML
<a href="mailto:me@mymail.com">amp;#xf0e0;</a>
Я поиграл с preg_replace, но ничего не добился. Я добрался до следующего кода, но он вообще не работает.
echo preg_replace(array('/([w-?amp;;#~=./] @([?)[a-zA-Z0-9-.] .([a-zA-Z]{2,3}|[0-9]{1,3})(]?))/i'), array('$1', 'amp;#xf0e0;'), $this->contact->email_to);
Я не эксперт по PHP, поэтому понимаю, что могут быть более простые способы сделать это, но мне трудно разобраться в этом.
Комментарии:
1. Есть ли у вас возможность изменить выходные данные
$this->contact->email_to
? Вы могли бы просто вывести адрес электронной почты, использовать его в своем собственном теге привязки, а затем использовать для текста все, что вы хотите.2. Привет, Кейси, боюсь, что нет. Я застрял с тем, что у меня есть.
Ответ №1:
Вероятно, это не лучший способ сделать это, но использование preg_replace
с HTML-тегами, и особенно с электронными письмами, всегда является занозой в заднице. Дайте мне знать, работает ли это для вас:
echo preg_replace("/>(.*)@(.*)</i", ">amp;#xf0e0;<", $this->contact->email_to);
Комментарии:
1. Спасибо за предложение, но, боюсь, это не сработало.
2. Точно так же
<a href="mailto:me@mymail.com">me@mymail.com</a>
3. Интересно. Проверьте этот кодовый блок , который я настроил, используя код, который я вам дал. Это работает следующим образом. Вывод заменяет текст в теге привязки. Может быть, что-то изменилось в вашем выводе HTML?
4. Привет, Кейси, ты абсолютно права, это действительно работает. Здесь есть что-то еще, что мешает ему работать на моем сайте, но ваш ответ правильный, спасибо.
5. Вы могли бы попробовать сначала запустить str_replace в выходных данных электронной почты, чтобы заменить все пробелы, а затем попробовать preg_replace. Где-то там может быть добавлено пространство, которое портит код.