php preg_split 简单模式任务

php preg_split simple pattern task

我不熟悉 preg_split,但我需要拆分字符串 '_bsdhh__1022232781' 我需要获取数字值所以我尝试了 preg_split 但我不确定如何正确设置模式我需要用“_”拆分这个字符串并附加 0-9 的数字例如 "_1"但是它不起作用,我需要得到整个数字值,所以有像 substring 这样的东西?我正在使用 explode,但如果有更多 _ 值,它就没用了。这似乎是一个新手问题,但我需要在服务器端进行快速修复。期待有帮助的回复。

$exploded = preg_split('_\[0-9]', $str); 

我会使用 preg_match() 从主题中提取标记:

<?php
$subject = '_bsdhh__1022232781';
$pattern = '/([0-9]+)/';
preg_match($pattern, $subject, $tokens);
print_r($tokens);

显然正则表达式可能不是最终的,它取决于您要提取的 内容 的确切定义以及主题的外观。为此,这种方法可能是一个更好的起点:

<?php
$subject = '_bsdhh__1022232781';
$pattern = '/[^0-9]*([0-9]+)[^0-9]*/i';
preg_match($pattern, $subject, $tokens);
print_r($tokens);

没有正则表达式的版本:

$string = '_bsdhh__1022232781';
$array = explode("_", $string);

function findNumber($values) {
    foreach($values as $value) {
        if(is_numeric($value)) {
            return $value;
        }
    }
}

$number = findNumber($array);

要用“_”拆分,要查找数字,可以使用preg_match,如@arkascha show。

代码

$str = "_bsdhh__1022232781";
$exploded = preg_split('/_/', $str); 
print_r($exploded);

希望对您有所帮助。