解析字符串时preg_match和regex错误?

时间:2011-11-05 15:16:40

标签: php regex string

我需要使用preg_match废弃网址的一部分,但我从来没有得到我需要的东西。 这里的例子是:

$item = "http://example.com/0229883504/?r=2-OR1&p=1";
$item = preg_match_all("/href[^\"]+/i",$item,$matches);
print_r($matches)

我需要返回此号码

  

0229883504

我尝试了很多但是当我var_dump匹配数组时,它给出了:

Array ( [0] => Array ( [0] => href= ) ) 

我知道这个问题属于这个模式,但我在这方面并不是很好:)

2 个答案:

答案 0 :(得分:1)

这是您需要的代码:

$item = "http://example.com/0229883504/?r=2-OR1&p=1";
$item = preg_match_all("#http://.*?/(.*?)/.*#i",$item,$matches);
print_r($matches);

如果需要提取值0229883504,可以添加以下行:

$result = $matches[1][0];
echo $result;

并且它可以正常工作:http://ideone.com/H2E9I

答案 1 :(得分:1)

这将在上面举例说明。

 preg_match_all("/http:\/\/example.com\/([a-zA-Z0-9]+)\//",$item,$matches)

甚至更好:

 preg_match_all("/http:\/\/example.com\/(.+)\//",$item,$matches)

但是,如果您的域名可能有所不同,请使用Aurelio中的代码示例:)。