任何人都可以帮我弄清楚如何搜索网址并根据结果打印课程,例如:
http://www.?.com/garden-design.html
我想要实现的是使用PHP在第一个尾部斜杠之后使用PHP计算术语“garden”然后它将打印一个类。如果它符合结构,它将打印一个不同的类。只有三个,所以我知道要搜索哪些单词。这不一定是动态的。
任何帮助都将不胜感激。
答案 0 :(得分:0)
您可以尝试使用正则表达式:
/http://www..+.com/(园|建筑|室内)?( - 设计)的.html /
然后$ 1会给你花园,建筑或室内作为字符串。你也可以使用(.+)
来收集那个地方的任何字符串。
更新使“-design”可选。
答案 1 :(得分:0)
我认为使用parse_url
可能是一个很好的起点 - 然后你可以explode
路径组件,然后只需strpos
对三个字符串进行比较你正在寻找,如果一个简单的开关声明是不够的。 (如果你沿着strpos路线走,请务必检查!== false。)
这可能可能比基于正则表达式的解决方案更快。
答案 2 :(得分:0)
看一下php函数strpos()
。有了它,你可以做类似的事情:
$url = "http://www.nothing.com/garden-design.html";
if (strpos($url, "/garden-design.html"))
doSomething();
else if (strpos($url, "/construction-design.html"))
doSomethingElse();
else if (strpos($url, "/indoor-design.html"))
doSomethingElseInstead();
字符串匹配通常比正则表达式更快,更有效。
答案 3 :(得分:0)
如果它不必是动态的,你可以这样做:
switch(true)
{
case stripos($_SERVER['REQUEST_URI'], 'garden'):
return 'garden';
break;
case stripos($_SERVER['REQUEST_URI'], 'construction'):
return 'construction';
break;
default:
return 'default';
break;
}
以上是非常明确的。更紧凑的解决方案可能是
function getCategory($categories)
{
foreach($catgories as $category) {
if stripos($_SERVER['REQUEST_URI'], $category) {
return $category;
}
}
}
$categories = array('garden', 'construction', 'indoor');
echo getCategory($categories);
这不会在/
之后为您提供第一个字,而只是检查您所请求的URI中是否存在您的某个关键字并将其返回。
您还可以使用parse_url将URI拆分为其组件,并使用path
组件上的字符串函数,例如。
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
在www.example.com/garden-design.html?foo=bar
中,这只会为您提供garden-design.html
部分。在您的场景中,您可能仍然会在其上执行stripos,因此您也可以直接在URL上执行此操作而不是解析它。