如何在这个字符串上执行preg_match()?

时间:2012-02-09 15:49:28

标签: php preg-match

我不擅长preg_match()。有人可以帮我创建一个preg_match()来检索网址中的最后一个参数。

PHP代码:

$url = "http://my.example.com/getThis";
$patern = ""; //need to create this

$result = preg_match($pattern, $url, $matches);

谢谢!

4 个答案:

答案 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
)

希望它有所帮助^^