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

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

WBOY
リリース: 2016-06-13 12:50:54
オリジナル
920 人が閲覧しました

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

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

$str='
';


$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);
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート