2011-11-13 20 views
0
$str='<p>http://domain.com/1.html?u=1234576</p><p>http://domain.com/2.html?u=2345678</p><p>http://domain.com/3.html?u=3456789</p><p>http://domain.com/4.html?u=56789</p>'; 
$str = preg_replace('/.html\?(.*?)/','.html',$str); 
echo $str; 

は私が のPHPにpreg_replaceの言葉最後の部分は

<p>http://domain.com/1.html</p> 
<p>http://domain.com/2.html</p> 
<p>http://domain.com/3.html</p> 
<p>http://domain.com/4.html</p> 

は、すべての単語の最後の部分から ?u=*number*を削除取得する必要があります。ありがとう。

答えて

1

変更この行:この中

$str = preg_replace('/.html\?(.*?)/','.html',$str); 

$str = preg_replace('/.html\?(.*?)</','.html<',$str); 
1

他の回答に代わる:これはURL変数をURLのすべてのタイプと一致します

preg_replace("/<p>([^?]*)\?[^<]*<\/p>/", "<p>$1</p>", $input); 

、その中にhtmlファイルを持つものだけでなく、

たとえば、あなたはまた、これらの値の種類を抽出することができます。

<p>http://domain.com/1.php?u=1234576</p> 
<p>http://domain.com?u=1234576</p> 
<p>http://domain.com</p> 
<p>http://domain.com/pages/users?uid=123</p> 

の出力で:

<p>http://domain.com/1.php</p> 
<p>http://domain.com</p> 
<p>http://domain.com</p> 
<p>http://domain.com/pages/users</p> 
0

彼らが扱うことができるように、このコードでは、配列にURLのをロードしますフライ:

$str = '<p>http://domain.com/1.html?u=1234576</p><p>http://domain.com/2.html?u=2345678</p><p>http://domain.com/3.html?u=3456789</p><p>http://domain.com/4.html?u=56789</p>'; 
$str = str_replace("<p>","",$str); 
$links = preg_split('`\?.*?</p>`', $str,-1,PREG_SPLIT_NO_EMPTY); 

foreach($links as $v) { 
    echo "<p>".$v."</p>"; 
}