我不擅长preg_match()
。有人可以帮我创建一个preg_match()
来检索网址中的最后一个参数。
PHP代码:
$url = "http://my.example.com/getThis";
$patern = ""; //need to create this
$result = preg_match($pattern, $url, $matches);
谢谢!
答案 0 :(得分:3)
检索最后一个参数?除了使用preg_match
之外,另一种方法是将$url
拆分为/
字符,然后获取最后一个元素。
$url = "http://my.example.com/getThis";
$arr = explode("/", $url);
$result = $arr[count($arr) - 1];
$result
的值为getThis
。
答案 1 :(得分:1)
不要使用正则表达式(特别是如果它们不是你的强项)
您只需要:
$lastSlash = strrpos($url, '/');
$result = substr($url, $lastSlash + 1);
答案 2 :(得分:1)
Muhammad Abrar Istiadi和AD7six的答案是比这更好的方法,我强烈建议使用爆炸,
但要回答你的问题:
$url = "http://my.example.com/getThis";
$pattern = "/\/([^\/]*)$/";
preg_match($pattern, $url, $matches);
print_r($matches);`
答案 3 :(得分:0)
有一个简单的PHP函数parse_url()来处理这个问题。
这里有3种不同的方法,最后一种,使用最简单的parse_url()函数。 第一个是简单的正则表达式。
第二个是相同的正则表达式,但为结果数组添加了键名。
第三个是使用PHP的parse_url()函数,它更简单地返回所有信息,但确实捕获了路径的'/'。 [路径] => /获得OS 3.0
<强>代码:强>
echo "Attempt 1:\n\n";
$url = "http://my.example.com/getThis";
$pattern = "/(.*?):\/\/(.*?)\/(.*)/"; //need to create this
$result = preg_match($pattern, $url, $matches);
print_r($matches);
echo "\n\nAttempt 2:\n\n";
$url = "http://my.example.com/getThis";
$pattern = "/(?<scheme>.*?):\/\/(?<host>.*?)\/(?<path>.*)/"; //need to create this
$result = preg_match($pattern, $url, $matches);
print_r($matches);
echo "\n\nAttempt 3:\n\n";
$better = parse_url($url);
print_r($better);
<强>结果:强>
尝试1:
Array
(
[0] => http://my.example.com/getThis
[1] => http
[2] => my.example.com
[3] => getThis
)
Attempt 2:
Array
(
[0] => http://my.example.com/getThis
[scheme] => http
[1] => http
[host] => my.example.com
[2] => my.example.com
[path] => getThis
[3] => getThis
)
Attempt 3:
Array
(
[scheme] => http
[host] => my.example.com
[path] => /getThis
)
希望它有所帮助^^