首页 > 解决方案 > 排除匹配中的单词

问题描述

我正在使用此代码制作可点击的电子邮件地址:

function makeemail($str) {

   $str = preg_replace('/([\!~#$%&=?^*\/_\.\+0-9a-zæøå-]+)@(([0-9a-zæøå-]+\.)+[a-z]{2,12})/i', '<a href="mailto:$1@$2" title="">$1@$2</a>', $str);

   return trim($str);

}

我该怎么做才能忽略其中包含“http://”和“https://”的文本?(或者可能只是“http”,简单来说)

一些 http 服务器 url 的地址中可以有 @,而我正在处理另一个函数中的 http url。

我是一个正则表达式菜鸟。我尝试添加?!http:\/\/?!https?:\/\/使用和不使用括号,但它不起作用,并且它超出了我的范围/如何准确放置它。


emailaddress@example.com- 这应该成为<a href="mailto:email@address.com" title="">email@address.com</a>(它完美地做到了)

http://userid:password@example.com:8080/- 这应该被忽略并保持原样,因为它包含http(s)://

标签: phpregexpreg-replace

解决方案


推荐阅读