我需要检查URL是否包含术语:“cidades”。
例如:
http://localhost/site/cidades/sp/sorocaba
所以,如果是肯定的,那么我需要创建两个或三个变量,剩下的内容没有“/”,在这种情况下:
$var1 = "sp";
$var2 = "sorocaba";
这些变量将是页面开始时的cookie值,然后,某些部分将使用wp-query这些值进行过滤。
答案 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>
我认为这个解决方案更好,因为生成的数组将支持任意数量的值,而不仅仅是两个。