PHPでURLに特定の文字列があるかどうかを確認する


111

URLに単語が含まれているかどうかを知りたい。

たとえば、www.domain.com / car /やwww.domain.com/car/audi/のようにURLにcarという単語が含まれている場合、「car is exist」と表示され、何も表示されない場合、「no cars」と表示されます。 。



これは、carという単語を探しているだけなのか、または車の種類も必要なのかによっても異なります。preg_match、strpos、explode、in_array / array_searchが必要になる場合がありますが、実際には依存します。単純なものが必要な場合は、提案されているようにstrposを使用するだけ
Matt


URLに「怖い」という単語が含まれている場合はどうなりますか?そのプリントは「車は存在しますか」?そうでなければ、ここでの答えのほとんどは間違っています。
doug65536

回答:


227

このようなものを試してください。最初の行はURLを作成し、残りの行に「car」という単語が含まれているかどうかを確認します。

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (strpos($url,'car') !== false) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}

私のプロジェクトに最適です!ありがとう!
WebDevKev 2014年

それが私が探していたものです。パーフェクト、ありがとう。
JunaidFarooqui

1
これは良い解決策ですが、どこにでも車があるURLに一致することに注意してください。たとえば、www.domain.com/car-pricingまたはwww.domain.com/carparks検証して出力しますCar exists。多分それはあなたのケースでは問題ではありませんが、他の人にとっては関連があるかもしれません!
Javacadabra 2016年

まさに私は素晴らしいを探しています!
Vignesh Krishnamoorthy 2017

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));URLに存在する1かどうかに関係なく私にくれcategoryます。なぜだと思いますか?
Si8、2018

66

私は最も簡単な方法だと思います:

if (strpos($_SERVER['REQUEST_URI'], "car") !== false){
// car found
}

パーフェクト... example.com/events/pagenameを照合して、「イベント」が含まれるURLを見つける必要がありました。
ティンゴ2018

この1週間で、これを4つの異なるプロジェクトで数回使用しました。シンプル。ありがとう。
ペグ

これは完全なURLをテストしません。パスのみ。スキーム、ドメイン、ポート、クエリパラメータ、またはフラグメントに対してはテストされません。
kloddant




4

その当時strstrは存在しませんでしたか?

if(strstr($_SERVER['REQUEST_URI'], "car")) {
   echo "car found";
}

これは最も簡単な方法の1つであるに違いありません。


3

strpos関数を見てください。

if(false !== strpos($url,'car')) {
    echo 'Car exists!';
}
else {
    echo 'No cars.';
}



1

確かにこれは正しい方法です...

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


if (!strpos($url,'mysql')) {
echo 'No mysql.'; //swapped with other echo statement
} else {
echo 'Mysql exists.';
}

それ以外の場合は、反対の方法で報告する必要があります...


1

これは私のために働きました:

// Check if URL contains the word "car" or "CAR"
   if (stripos($_SERVER['REQUEST_URI'], 'car' )!==false){
   echo "Car here";
   } else {
   echo "No car here";
   }
エコーでHTMLを使用する場合は、「」の代わりに「」を使用してください。
このコードを使用して、Webページhttps://geaskb.nl/にアラートを表示します 
URLに「Omnik」という単語が含まれている 
ただし、URLに「Omnik」という単語を含まないページではアラートを非表示にします。

0

$_GET実際には配列であると呼ばれるグローバル変数から受け取ったURLパラメータ。したがって、URLにパラメーターが含まれているかどうかを確認するには、isset()関数を使用できます。

if (isset($_GET['yourparametername'])) {
//The parameter you need is present
}

その後、URLにアタッチする必要があるそのようなパラメーターの個別の配列を作成できます。

例えば:

if(isset($_GET['param1'])) {
\\The parameter you need is present
$attachList['param1'] = $_GET['param1'];
}

if(isset($_GET['param2'])) {
$attachList['param2'] = $_GET['param2];
}

ここで、?シンボルが必要かどうかを知るには、この配列を数えるだけです

if(count($attachList)) {
    $link .= "?";
    // and so on
}

更新:

パラメータが設定されているかどうかを確認するには、$ _ GETを数えます

if(count($_GET)) {
     //some parameters are set
}

0
if ( stristr( SITE_HOST, 'your site' ) ) {
    $protocol = ( !empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? 'https://' : 'http://';
    $request = ( !empty( $_SERVER['HTTP_X_ORIGINAL_REQUEST'] ) ) ? $_SERVER['HTTP_X_ORIGINAL_REQUEST'] : $_SERVER['REQUEST_URI'];
    echo $protocol .'your site'. $request;
}

0

あなたはこのコードサーとしてこの関数を使うことができます

 if((strpos($_SERVER['REQUEST_URI'],'car') !== false))
        echo'<h3 class=" edit-top">Car Exist</h3>';
    else
        echo'<h3 class=" edit-top">Not</h3>';

-1
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if ( strpbrk($url, 'test') ) {
    // Do something...
}
else {
    // Do another thing
}

(> PHP 5)


これは質問に答えますが、より良い方法があります...この関数は、見つかった文字から始まる文字列を返します... strpbrk()ドキュメントはここにあります
jagb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.