ホームページ >バックエンド開発 >PHPチュートリアル >専門家の方、この正規表現の何が問題なのか教えてください。

専門家の方、この正規表現の何が問題なのか教えてください。

WBOY
WBOYオリジナル
2016-06-13 12:50:54922ブラウズ

専門家の方、この正規表現の何が問題なのか教えてください。 ?

この投稿は、dz215136304 によって 2012-07-05 08:54:58 に最終編集されました 要件: 文字列 $str の href 内のハイパーリンクを抽出します。抽出されたハイパーリンクに「id=number」が含まれている場合は、それを go.php?id=number に置き換え、それ以外の場合は # に置き換え、置き換えたリンクを元に戻します。現状では、抽出することはできますが、元の場所に戻すと、3499910bf9dac5ae3c52d5ede7383485 タグ全体が置き換えられます。 ?

$str='cc51f7c983ae82a38fa640bed428259e75cc83e9f9a2027cf7076b6cd20325a9';


$str=preg_replace('[a-zA-z] ://[^s]*','endecode::showdescurl("$2")',$str);

echo $str;


endecode クラスの静的メソッド: showdescurl コードは次のとおりです:

<br />
static function showdescurl($url){<br />
		 if(strpos($url,'id') !==false){<br />
        preg_match('/id=(\d+)/i',$url,$ar);<br />
        return  'go.php?id='.$ar[1];<br />
     }else{<br />
        return '#';     <br />
     }  <br />
		<br />
}<br />

-----解決策--------------------------------
$str = preg_replace('# (?<=href...)([a-zA-z] ://)([^'"]*)#e','endecode::showdescurl ("$2")',$str);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。