ddw_0_op1
ddw_1_op1
ddw_2_op1
ddw_3_op1
ddw_4_op1
在这些数组字符串中我怎么能只提取或preg_match中间增加的数字。提前谢谢
答案 0 :(得分:1)
我会在下划线上打破字符串:
$parts = explode('_', $string);
$middle = $parts[1];
答案 1 :(得分:1)
如果数字永远不会超过一位数,您只需使用$str[4]
来获取字符串的第五个字符(您的数字)。但是,另一方面,如果数字无限期地继续,您可以使用以下任一正则表达式。
(?<=_)\d+(?=_)
(?<=_)
正面的后瞻断言先于_
\d+
匹配一个或多个数字(?=_)
肯定后面的正面前瞻是_
See regex in use here:此方法比前一步使用更少的步骤。
_\K\d+(?=_)
_
按字面意思匹配\K
重置报告的匹配的起点。最终匹配中不再包含任何以前消费的字符\d+
匹配一个或多个数字(?=_)
肯定后面的正面前瞻是_
答案 2 :(得分:0)
使用preg_match
功能:
$str = "ddw_01_fdfd";
preg_match('/.+_([0-9]+)_.+/', $str, $matches);
echo $matches[1];
输出:
01
另一种方法是通过_
:
$xpl = explode('_', $str);
$middleStr = $xpl[1];
explode
函数按字符串拆分字符串,在这种情况下,创建一个由$str
中包含的所有子字符串创建的数组,将它们除以_
。
试试here。