php preg_split简单模式任务

时间:2015-01-17 19:16:06

标签: php regex

我不熟悉preg_split,但我需要拆分字符串 '_bsdhh__1022232781'我需要获取数字值,所以我尝试了preg_split,但我不确定如何正确设置模式我需要将此字符串拆分为" _"并附加0-9之间的数字,例如"_1"但是它不起作用,我需要得到整数值,所以有类似子字符串的东西?我正在使用爆炸,但在更多_值的情况下它没用。这似乎是一个新手问题,但我需要在服务器端快速修复。期待有用的回复。

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

3 个答案:

答案 0 :(得分:1)

我使用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);

答案 1 :(得分:1)

没有正则表达式的版本:

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

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

$number = findNumber($array);

答案 2 :(得分:0)

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

<强>代码

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

希望这会对你有帮助。