从超链接中删除尾随空格

时间:2012-09-19 12:16:50

标签: php regex

我想阻止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

3 个答案:

答案 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;
}