查找具有固定起始位数的数字

时间:2016-09-07 16:39:51

标签: php regex string strpos

当我在行内找到以0123开头的10位或11位数字时,我试图打印出一行。

$line将包含大量数据,我感兴趣的是查看该行并查看是否有一个以0123开头并且长度为10或11位的数字。我不在乎它在哪里。

我目前的代码如下:

$lines = file('test.txt');

foreach ($lines as $line) {
    if (strpos($line,'0123?????'))
        echo "$line<br/>";
}

我发现strpos()不支持通配符。那么有什么办法让strpos()接受通配符,或者我需要以另一种方式做到这一点吗?

2 个答案:

答案 0 :(得分:1)

我认为有一些功能可以连续进行,但旧学校:

<强> 1。检查字符串是否具有前缀0123

substr($line, 0, 4 ) === "0123"

<强> 2。获取字符串数:

strlen($line) >= 10

所以:

$lines = file('test.txt');
foreach ($lines as $line) {
    $stringCount = strlen($line);
    if (substr($line, 0, 4 ) === "0123" && ($stringCount == 10 || $stringCount == 11))
    echo "$line<br/>";
}

编辑:

$pos = strpos($lines, '0123');

if ($pos) {
    $diff = $stringCount - $pos
    if($diff == 10 || $diff == 11) {
        echo "$line<br/>";
    }
}

答案 1 :(得分:0)

https://3v4l.org/tLH7B

foreach($lines as $line){
    $len = strlen($line);
    if(($len==10||$len==11)&&"0123"===substr($line, 0, 4))
        echo "valid: $line \n";
}

你需要一个通配符?