ホームページ > バックエンド開発 > PHPチュートリアル > 専門家の方、この正規表現のどこが間違っているのでしょうか?

専門家の方、この正規表現のどこが間違っているのでしょうか?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 13:16:27
オリジナル
798 人が閲覧しました

専門家の方、この正規表現の何が問題なのか教えてください。 ?
要件: 文字列 $str の href 内のハイパーリンクを抽出します。抽出されたハイパーリンクに「id=number」が含まれている場合は go.php?id=number に置き換え、それ以外の場合は # に置き換えて、置き換えたリンクを配置します。現状では抽出はできても、元の場所に戻すとタグ全体が置き換えられてしまうのですが、何が問題だったのでしょうか? ?

$str='
';


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

echo $str;


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

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

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

ログイン後にコピー


------解決策-- - ------------------
$str = preg_replace('#(?<=href...)([a-zA-z]+://)([^'"]*)#e','endecode::showdescurl("$2 ")',$str);
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート