2014-12-23 78 views
0
$pattern = '/<a\s+href=["\']([^"\']+)["\']/i'; 
$desc_feed = preg_replace($pattern, '<a href="https://www.facebook.com/something"', $block->get_description()); 

这是我用来过滤URL的正则表达式,它运行良好。不过,我只想定位某种类型的网址,也就是说,如果它包含特定的子字符串,我只想替换整个网址://l.face...(无点)正则表达式匹配某些模式的网址

任何帮助赞赏。

+0

是专门针对像JavaScript或PHP语言的一些,你可以添加在标签。所以,用户有专门知识这technoody将帮助你相同 – Panther

+0

请看这里的第一个答案http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags PONY,他来了 –

+0

你究竟在做什么?你有一个字符串中的HTML?来自可信/不可信来源?你想重写该HTML中的一些链接目标?不要告诉我们关于子字符串匹配 - 告诉我们最终用户或用户代理可能看到的要求。 –

回答

0

声明:不要用正则表达式解析html!

但是,如果你也有,这可能适用于你的测试用例。

查找:'~(?s)<a\s+href=(["\'])(?:(?!\1).)*?//l\.face(?:(?!\1).)*?\1~' 替换:无论你想

(?s)       # Dot all 
<a \s+ href= 
(["'])      # (1), Delimiter 
(?: 
     (?! \1)      # Any char except delimiter 
     . 
)*? 
//l \. face     # What you're looking for 
(?: 
     (?! \1)      # Any char except delimiter 
     . 
)*? 
\1       # Backref to delimiter 
+0

优秀 - 谢谢! 正是我在找的东西。 – Sebastian