Php 从超链接中删除尾随空格

Php 从超链接中删除尾随空格,php,regex,Php,Regex,我想防止UGC网站上的超链接中出现空格。我已经写了正则表达式,它工作得非常完美,除了它没有从链接和锚文本中删除尾随空格 这是我的密码: $text = '< a href = " http://www.examplesite.com/ "> Example site </a>'; $text = preg_replace('#(<(\s+)*a(\s+)*href(\s+)*=(\s+)*("|\')(\s+)*([^"]+)("|\')&

我想防止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);
$text=”示例站点”;
$text=preg_replace('#)(试试这个:

preg_replace("{<\s*a\s*href\s*=\s*(\"|')\s*([^\s]+)\s*\\1>\s*(.*?)\s+</a>}","<a href='$2'>$3</a>",$text);
preg_replace(“{试试这个:

preg_replace("{<\s*a\s*href\s*=\s*(\"|')\s*([^\s]+)\s*\\1>\s*(.*?)\s+</a>}","<a href='$2'>$3</a>",$text);

preg_replace(“{尝试此操作以删除额外的空格

function  RemoveExtraSpaces($str)
{
    while(strpos($str,"  "))
    {
        $str = str_replace("  ", "", $str);
    }
    return $str;
}   

尝试此操作以删除额外的空格

function  RemoveExtraSpaces($str)
{
    while(strpos($str,"  "))
    {
        $str = str_replace("  ", "", $str);
    }
    return $str;
}   

我不是正则表达式的专家,但似乎你需要一种回溯的方法,你一直读到结尾的
,但你必须回溯到最后一个非空格字符。我不知道该怎么做,所以我要做的是在你得到半清除的字符串之后

a) str_replace或b)写入第二个正则表达式

$str = str_replace(" '>","'>", $count);
$str = str_replace(" \">","\">", $count); 
$str = str_replace(" </a>","</a>", $count);
$str=str\u replace(“'>”、“'>”、$count);
$str=str\U替换(“\”>,“\”>,$count);
$str=str\u replace(“,”,$count);

递归,直到没有更多的替换可以完成。我知道它的原语,但应该可以完成这项工作。

我不是正则表达式专家,但似乎您需要一种方法来回溯,您一直阅读到结束
但您必须回溯到最后一个非空格字符。我不知道如何执行此操作,因此我将在您获得半清除字符串后执行此操作

a) str_replace或b)写入第二个正则表达式

$str = str_replace(" '>","'>", $count);
$str = str_replace(" \">","\">", $count); 
$str = str_replace(" </a>","</a>", $count);
$str=str\u replace(“'>”、“'>”、$count);
$str=str\U替换(“\”>,“\”>,$count);
$str=str\u replace(“,”,$count);

递归,直到没有更多的替换可以完成。我知道它的原语,但应该可以完成这项工作。

这应该可以做到,但用$3和$4(不是$2和$3)。它不适用于有空格的URL,用空格的页面。我更新了问题。这应该可以做到,但用$3和$4(不是$2和$3)。它不适用于带有空格的URL,页面带有空格。我已更新了问题。这将删除所有匹配的内容。您将得到example.com/a/bcd“>examplesite之类的无效内容。将str_raplaces(“,”,$str);更改为str_raplaces(“,”,$str);我使用php已经有一段时间了,但是用空格替换空格有什么好处呢?如果这确实解决了问题,请用解释编辑您的答案。这将删除所有内容,mate。您将得到一个类似example.com/a/bcd“>examplesite的无效内容。将str_raplaces(“,”,$str)更改为str_raplaces(“,“”,$str);我使用php已经有一段时间了,但是用空格替换空格有什么好处呢?如果这确实解决了问题,请编辑您的答案并给出解释。