使用PHP检查URL是否具有某些字符串


111

我想知道URL中是否有单词。

举例来说,如果网址中包含字词car,例如www.domain.com/car/或www.domain.com/car/audi/,它将回显“ car is exist”,如果没有,则回显“ no cars” 。



这还取决于您是否只是在寻找“汽车”一词,或者是否也想要汽车的类型。您可能需要preg_match,strpos,explode和in_array / array_search,这实际上取决于。如果您想要简单的内容,请按照建议使用strpos
Matt

s($_SERVER['REQUEST_URI'])->contains('car')如在该独立库中所发现的,您可能会有所帮助。
caw 2016年

如果网址中包含单词“ scared”,该怎么办?应该打印“汽车存在”吗?如果没有,那么这里的大多数答案都是错误的。
doug65536

Answers:


227

尝试这样的事情。第一行建立您的URL,其余行检查是否包含单词“ car”。

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


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

非常适合我的项目!谢谢!
WebDevKev

那就是我想要的。很好,谢谢。
JunaidFarooqui '16

1
这是一个很好的解决方案,但请注意,它将与任何地方都有汽车的URL匹配。例如www.domain.com/car-pricingwww.domain.com/carparks将验证并输出Car exists。也许对您而言并不重要,但对其他人而言可能是有意义的!
Javacadabra '16

确实我在寻找很棒!
Vignesh Krishnamoorthy

$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; echo count(strpos($url,'category'));给我1不管是否category存在于Url中。知道为什么吗?
Si8

66

我认为最简单的方法是:

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

完美...我需要匹配example.com/events/pagename才能找到其中包含“事件”的所有网址,并且可以正常工作!
Tingo

在过去的一周中,我已经在4个不同的项目上使用过几次。简单。谢谢。
Pegues

这不会测试完整的URL。只有路径。它不会针对方案,域,端口,查询参数或片段进行测试。
kloddant

22
$url = " www.domain.com/car/audi/";
if (strpos($url, "car")!==false){
    echo "Car here";
}
else {
   echo "No car here :(";
}

strpos手册




4

那时strstr不存在?

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

这一定是最简单的方法之一吧?


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,'car')) {
    echo 'Car exists.';
} else {
    echo 'No cars.';
}

这似乎有效。


这里的路错了。
Kobus Myburgh

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,请确保使用''而不是“”。
我使用此代码在我的网页https://geaskb.nl/上显示警报 
URL中包含单词“ Omnik” 
但在网址中不包含单词“ Omnik”的页面上隐藏警报。

0

URL参数是从称为的全局变量($_GET实际上是数组)接收的。因此,要知道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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.