$productid = preg_match('/^.*?_/', $ProductPath);
ShowProduct($productid);
问题是$ productid始终为1,无论$ productpath是什么都不会更改,例如,如果productpath为/store/gst/prod_4
它仍然等于1
答案 0 :(得分:3)
也许这会有所帮助
preg_match( '/^.*?_(\d+)/', $ProductPath, $matches );
$productid = $matches[1];
答案 1 :(得分:2)
preg_match返回匹配数。这意味着您的模式匹配一次。如果你想得到结果,你需要使用preg_match的第三个参数。
答案 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]);