当我在行内找到以0123
开头的10位或11位数字时,我试图打印出一行。
$line
将包含大量数据,我感兴趣的是查看该行并查看是否有一个以0123
开头并且长度为10或11位的数字。我不在乎它在哪里。
我目前的代码如下:
$lines = file('test.txt');
foreach ($lines as $line) {
if (strpos($line,'0123?????'))
echo "$line<br/>";
}
我发现strpos()
不支持通配符。那么有什么办法让strpos()
接受通配符,或者我需要以另一种方式做到这一点吗?
答案 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)
foreach($lines as $line){
$len = strlen($line);
if(($len==10||$len==11)&&"0123"===substr($line, 0, 4))
echo "valid: $line \n";
}
你需要一个通配符?