我正在尝试匹配文件中的信息,但是当我尝试使用preg_match("/^[1-9][0-9]{4}$/")
进行正则表达时,我可以匹配单行,但不能直接从文件中读取。我的代码如下:
<?php
$line = "23146";
$line = str_replace("\n", "", $line);
if(preg_match("/^[1-9][0-9]{4}$/", $line, $matches)) { // Matching the PO No.
print_r($matches);
}
// Following don't work on PHP 5.3.26
$file = fopen("meaw.txt", "r") or die("Unable to open file");
while(!feof($file)) {
$line = fgets($file);
if(preg_match("/^[1-9][0-9]{4}$/", $line, $matches)) { // Matching the PO No.
print_r($matches);
}
}
fclose($file);
echo "\nFile Closed";
?>
我的文件是meaw.txt
我的问题是,当我在ubuntu PHP7上运行它时,此代码可以运行文件。但是,当我在windows2008 php5.3.26上运行此代码时,它会打印以下内容
阵 ( [0] =&gt; 23146 )
文件已关闭
但我应该得到
阵列( [0] =&gt; 23146)阵列( [0] =&gt; 63144)阵列( [0] =&gt; 63140)阵列( [0] =&gt; 63201)阵列( [0] =&gt; 63148)阵列( [0] =&gt; 63201)阵列( [0] =&gt; 63148)阵列( [0] =&gt; 63201)阵列( [0] =&gt; 63148)阵列( [0] =&gt; 63201)阵列( [0] =&gt; 63140)阵列( [0] =&gt; 63148)
文件已关闭
有人可以告诉我为什么会这样吗?谢谢。
答案 0 :(得分:0)
问题是Windows将新行读为&#34; \ r \ n&#34; ,但unix以不同方式读取它。我所要做的只是在while循环中添加以下内容
$line = str_replace("\r\n", "", $line);