检查URL是否包含字符串,然后使用url字符串创建变量

时间:2015-06-05 04:08:06

标签: php wordpress url cookies

我需要检查URL是否包含术语:“cidades”。

例如:

http://localhost/site/cidades/sp/sorocaba

所以,如果是肯定的,那么我需要创建两个或三个变量,剩下的内容没有“/”,在这种情况下:

$var1 = "sp";
$var2 = "sorocaba";

这些变量将是页面开始时的cookie值,然后,某些部分将使用wp-query这些值进行过滤。

2 个答案:

答案 0 :(得分:1)

这应该适合你:

我在preg_match()查看搜索词是否在两个斜杠之间的网址$str中。如果是,我从搜索词之后的网址中获取substr(),并将explode()变为带有斜杠作为分隔符的数组。然后你可以简单地遍历数组,用complex (curly) syntax创建变量。

<?php

    $str = "http://localhost/site/cidades/sp/sorocaba";
    $search = "cidades";

    if(preg_match("~/$search/~", $str, $m, PREG_OFFSET_CAPTURE)) {
        $arr = explode("/", substr($str, $m[0][1]+strlen($m[0][0])));

        foreach($arr as $k => $v)
            ${"var" . ($k+1)} = $v;

    }

    echo $var1 . "<br>";
    echo $var2;

?>

输出:

sp
sorocaba

答案 1 :(得分:0)

以下是两个可以为您完成的功能:

function afterLast($haystack, $needle) {
    return substr($haystack, strrpos($haystack, $needle)+strlen($needle));
}

PHP的原生explode

首先调用afterLast,传递/cidades/字符串(如果你不指望斜杠,则只传递cidades)。然后在explode上获取结果和/以获得生成的数组。

看起来像是:

$remaining_string = afterLast('/cidades/', $url);
$items = explode('/', $remaining_string)

请注意,如果/调用中包含afterLast标记,则explode数组中的第一个元素将为空。< / p>

我认为这个解决方案更好,因为生成的数组将支持任意数量的值,而不仅仅是两个。

相关问题