1

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> 

URL にはスペースも含まれます。つまり、 http://www.examplesite.com/blog/space.htmlを含むページです。

4

3 に答える 3

2

これを試して:

preg_replace("{<\s*a\s*href\s*=\s*(\"|')\s*([^\s]+)\s*\\1>\s*(.*?)\s+</a>}","<a href='$2'>$3</a>",$text);
于 2012-09-19T12:25:39.833 に答える
0

私は正規表現の専門家ではありませんが、バックトラックする方法が必要なようです。最後まで読みました"が、最後の非スペース文字にバックトラックする必要があります。どうすればいいかわからなかったので、半透明の弦を手に入れた後です。

a) str_replace または b) 2 番目の正規表現を書き込む

$str = str_replace(" '>","'>", $count);
$str = str_replace(" \">","\">", $count); 
$str = str_replace(" </a>","</a>", $count);

置換ができなくなるまで再帰的に動作するはずです。私が知っているその原始的ですが、仕事をするべきです。

于 2012-09-19T14:17:15.340 に答える
-1

これを試して余分なスペースを削除してください

function  RemoveExtraSpaces($str)
{
    while(strpos($str,"  "))
    {
        $str = str_replace("  ", "", $str);
    }
    return $str;
}   
于 2012-09-19T12:50:50.300 に答える