我想阻止UGC网站上超链接的空格。我写了正则表达式它完美无缺,除了它没有从链接和锚文本中删除尾随空格。
这是我的代码:
$text = '< a href = " http://www.examplesite.com/ "> Example site </a>';
$text = preg_replace('#(<(\s+)*a(\s+)*href(\s+)*=(\s+)*("|\')(\s+)*([^"]+)("|\')>(\s+)*([^<]+)(\s+)*</a>)#','<a href="$8">$11</a> ',$text);
<a href="http://www.examplesite.com/ ">Example site </a>
网址还包含空格,即http://www.examplesite.com/blog/a页面,其中包含space.html
答案 0 :(得分:2)
试试这个:
preg_replace("{<\s*a\s*href\s*=\s*(\"|')\s*([^\s]+)\s*\\1>\s*(.*?)\s+</a>}","<a href='$2'>$3</a>",$text);
答案 1 :(得分:0)
我不是正则表达式的专家,但似乎你需要一种方法来回溯,你一直读到结束"
,但你必须回溯到最后一个非空格字符。我不知道如何做到这一点所以我要做的就是你得到半清除字符串后
a)str_replace或b)写第二个正则表达式
$str = str_replace(" '>","'>", $count);
$str = str_replace(" \">","\">", $count);
$str = str_replace(" </a>","</a>", $count);
递归,直到不能再进行更换工作。我知道它的原始,但应该做的工作。
答案 2 :(得分:-1)
尝试此操作以删除多余的空格
function RemoveExtraSpaces($str)
{
while(strpos($str," "))
{
$str = str_replace(" ", "", $str);
}
return $str;
}