我有一个包含很多链接的字符串,我想在将它们打印到屏幕之前进行调整:
我有以下内容:
<a href="http://www.dont_replace_this.com">replace_this</a>
并希望最终得到像这样的东西
<a href="http://www.dont_replace_this.com">replace this</a>
通常我会使用类似的东西:
echo str_replace("_"," ",$url);
在这种情况下我不能这样做,因为URL包含下划线,所以它打破了我的链接,我想可以使用正则表达式解决这个问题。
有什么想法吗?
答案 0 :(得分:3)
这是正则表达式:<a(.+?)>.+?<\/a>
。
我正在做的是在锚标记中保留重要的动态内容,并用以下函数替换它:
preg_replace('/<a(.+?)>.+?<\/a>/i',"<a$1>REPLACE</a>",$url);
答案 1 :(得分:2)
这将涵盖大多数情况,但我建议您进行检查以确保没有遗漏或更改任何意外情况。
pattern = "/_(?=[^>]*<)/";
preg_replace($pattern,"",$url);
答案 2 :(得分:0)
您可以使用此正则表达式
(>(.*)<\s*/)
编辑:
$replaced_text = preg_replace_callback('~(>(.*)<\s*/)~g','uscore_replace', $text);
function uscore_replace($matches){
return str_replace('_','',$matches[1]); //try this with 1 as index if it fails try 0, I am not entirely sure
}