2013-12-16 133 views
0

我尝试从这个网址取得产品ID获得具体的数字,该模式是尽量找数p-之后和之前.html正则表达式:在URL

http://www.domain.com/jp-37025-shoes-red-p-362060.html?stores=203 
http://www.domain.com/pp-66743-shoes-red-p-665322.html?stores=12 

的结果应该是:

362060 
665322 

我现在的代码:

$subject = "http://www.domain.com/jp-37025-shoes-red-p-362060.html?stores=203"; 
$patern = '/\W*[a-z]\D*/'; 
$string = preg_replace($patern, '', $subject); 

echo $string; 
+1

/p-(\d*).html/? – dklt

回答

3

你应该用括号来像这样exacly匹配:

preg_match("/p-(\d+)\.html/", $input_line, $output_array); 

例如第一字符串匹配这样的:

Array 
(
    [0] => p-362060.html 
    [1] => 362060 
) 
+0

如果产品ID是这种格式'352_1088' – rusly

+0

没关系我找到了这样的模式'/ _ * [0-9] *(?:_(\ d +))/' – rusly

1

你想要什么的preg_match,不是的preg_replace。

preg_match ('/(\d+)\.html/', $subject, $matches); 

echo $matches [1];