3

eregi() は推奨されておらず、preg_match に置き換える必要があります。次の構文を preg_match に変換するにはどうすればよいですか? 以下が URL であり、正規表現パターンが必要であるとします。

$url = "https://james.wordpress.com/2013/05/13/my-product-final";
$urlregex = "^(https?|ftp)\:\/\/([a-zåäöÅÄÖæÆøØ0-9+!*(),;?&=\$_.-]+(\:[a-zåäöÅÄÖæÆøØ0-9+!*(),;?&=\$_.-]+)?@)?[a-zåäöÅÄÖæÆøØ0-9+\$_-]+(\.[a-zåäöÅÄÖæÆøØ0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-zåäöÅÄÖæÆøØ0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-zåäöÅÄÖæÆøØ0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-zåäöÅÄÖæÆøØ0-9+\$_.-]*)?\$";

次のコードは正常に動作します。

if (eregi($urlregex, $url)) {
echo "Valid";
exit;
}

「preg_match」に変換しようとしましたが、うまくいきませんでした:

if (preg_match("#$urlregex#i", $url)) {
echo "Valid";
exit;
}

このようにも試しました:

if (preg_match('/'.$urlregex.'/i', $url))
4

3 に答える 3

1

これを試して :-

$url = "https://james.wordpress.com/2013/05/13/my-product-final";
if (preg_match("/^(https?:\/\/+[\w\-]+\.[\w\-]+)/i",$url))
{
echo "Valid";
exit;
}

filter_var()関数は、文字列が URL かどうかを検証することもできます

于 2013-08-28T12:56:14.967 に答える
1

#区切り文字として使用している文字(つまり)が正規表現に存在するため、機能しません。

あなたはできる:

  • #を正規表現でエスケープします。\#
  • デリミタを正規表現に存在しない文字に変更します
于 2013-08-28T13:06:48.080 に答える