关于PHP的正则表达式无法正常工作

时间:2011-07-22 12:23:44

标签: php regex

$productid = preg_match('/^.*?_/', $ProductPath);
ShowProduct($productid);

问题是$ productid始终为1,无论$ productpath是什么都不会更改,例如,如果productpath为/store/gst/prod_4它仍然等于1

6 个答案:

答案 0 :(得分:3)

也许这会有所帮助

preg_match( '/^.*?_(\d+)/', $ProductPath, $matches );
$productid = $matches[1];

答案 1 :(得分:2)

preg_match返回匹配数。这意味着您的模式匹配一​​次。如果你想得到结果,你需要使用preg_match的第三个参数。

See here the docs on php.net

答案 2 :(得分:0)

尝试:

preg_match('/^.*?_/', $ProductPath, $matches);
$productid = (int) $matches[0];

答案 3 :(得分:0)

如果您只想在_下划线之前获取前几个字符,则可以改为使用strtok

$productid = strtok($ProductPath, "_");

(如果您(1)正确使用preg_match,则使用正则表达式才有意义;(2)还要验证前几个字符实际上是数字\d+。)

答案 4 :(得分:0)

$productid = preg_match('/^.*?_/', $ProductPath, $match);
print_r($match);

答案 5 :(得分:0)

$productid = preg_match('#(prod_)([0-9]+)#', $ProductPath);
ShowProduct($productid[1]);