正しい URL を抽出する方法の専門家を探しています。

WBOY
リリース: 2016-06-23 14:23:06
オリジナル
999 人が閲覧しました

この投稿は dz215136304 によって最終編集されました: 2013-09-10 14:52:56

要件: 文字列内の URL を抽出します

抽出された URL は再度処理する必要があるため、コールバック関数に入れられますが、同じ正規表現は preg_match_all に置くと正常ですが、preg_replace_callback に置くと動作しません。 次のコードは sdfsd.qq.www.qq.com を抽出します

$con='http://sdfsd.qq.www.qq.com/sdf.html?a=c';//preg_match_all('/([a-z1-9\.]+\.[com|cn|info]+)/is', $con, $arr);//print_r($arr);这里可以正常提取出sdfsd.qq.www.qq.com的网址$conn=preg_replace_callback('/([a-z1-9\.]+\.[com|cn|info|tk|us]+)/isum', 'url', $con);//同样的正则放到这里就提取不出sdfsd.qq.www.qq.comecho $conn;   function url($url){return $url[1];//不管这里是$url[0]还是$url[1]}
ログイン後にコピー


ディスカッションへの返信 (解決策)

preg_match_all を抽出します
preg_replace_callback
を置き換えることです
function url($url){
return $url[1];// そのまま返す
}
効果はどうやって確認できますか?

preg_match_all は抽出

preg_replace_callback は置換

you
function url($url){
return $url[1];// そのまま返す
}
効果はどうやって確認できますか?
この正規表現に問題があるかどうかを確認してください。どうすれば修正できますか? 1. 文字列に www.w3.org や w3.org などの文字列が含まれている場合は、そのまま返されます。ここでの問題は、org のみが一致するため、結果が " http://www.w3.http://localhost/psh/1999/xhtml" になることです。
2. 文字列内のこの正規表現には、"i" が含まれている必要があります。 " パラメータを使用して大文字と小文字を区別しないようにし、ファイル文字列に "loginInfo.js" が含まれている場合もエラーが発生し、一致は "http://localhost/xxx1rr1dpn/loginhttp://localhost/jogp.js" となり、正しいものになりました。 「http://localhost/xxx1rr1dpn/loginInfo.js」である必要があります

$con='http://www.w3.org/1999/xhtml,http://www.qq.com/loginInfo.js';$url=preg_replace_callback('/(http:\/\/?[a-zA-Z1-9\.]{2,}\.{1}com|cn|info|tk|org|us)/is', 'url', $con);echo $url; function url($url){	echo $url[1]."<br>";if($url[1]=='http://www.w3.org'||$url[1]=='www.w3.org'||$url[1]=='w3.org'){	return $url[1];}return "http://localhost/".str_replace("http://","",$url[1]);//}
ログイン後にコピー


試してください

$con='http://www.w3.org/1999/xhtml,http://www.qq.com/loginInfo.js';  $url=preg_replace_callback('/http:\/\/[\w.]+(com|cn|info|tk|org|us)/is', 'url', $con);echo $url;  function url($url){    echo $url[0]."\n"; if($url[0]=='http://www.w3.org'||$url[0]=='www.w3.org'||$url[0]=='w3.org'){    return $url[0];}return "http://localhost/".str_replace("http://","",$url[0]);// }
ログイン後にコピー


preg_replace_callback は置き換えです

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