我有一个将数据导出到日志文件的奇怪脚本,文件如下所示:
contactid:
15186 is present in PND!. contactid: 15186
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
PND Done contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
3630 Is present in PMF!. contactid: 3630
contactid:
contactid:
3679 Is present in PMF!. contactid: 3679
3695 Is present in PMF!. contactid: 3695
3699 Is present in PMF!. contactid: 3699
contactid:
contactid:
contactid:
3761 Is present in PMF!. contactid: 3761
contactid:
3767 Is present in PMF!. contactid: 3767
3770 Is present in PMF!. contactid: 3770
3772 Is present in PMF!. contactid: 3772
contactid:
3785 Is present in PMF!. contactid: 3785
contactid:
contactid:
我编写了一个删除前导contactid:
文字的脚本:
$file1 = $_GET['id'].".log";
$lines = file($file1);
foreach($lines as $line_num => $line)
{
$int = trim($line, "contactid: <br/>");
echo $int;
}
然后我可以在浏览器中打开文件,返回如下数据:
15186 is present in PND!. contactid: 15186
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
PND Done contactid:
contactid:
contactid:
contactid:
contactid:
contactid:
3630 Is present in PMF!. contactid: 3630
contactid:
contactid:
3679 Is present in PMF!. contactid: 3679
3695 Is present in PMF!. contactid: 3695
3699 Is present in PMF!. contactid: 3699
contactid:
contactid:
contactid:
3761 Is present in PMF!. contactid: 3761
contactid:
3767 Is present in PMF!. contactid: 3767
3770 Is present in PMF!. contactid: 3770
3772 Is present in PMF!. contactid: 3772
contactid:
3785 Is present in PMF!. contactid: 3785
contactid:
contactid:
我要做的是删除所有空的contactid:行,这样我的输出如下所示:
15186 is present in PND!. contactid: 15186
3630 Is present in PMF!. contactid: 3630
3679 Is present in PMF!. contactid: 3679
3695 Is present in PMF!. contactid: 3695
3699 Is present in PMF!. contactid: 3699
3761 Is present in PMF!. contactid: 3761
3767 Is present in PMF!. contactid: 3767
3770 Is present in PMF!. contactid: 3770
3772 Is present in PMF!. contactid: 3772
3785 Is present in PMF!. contactid: 3785
删除这些数据让我感到震惊!任何有关实现此功能的帮助或提示都会很棒!
答案 0 :(得分:0)
您可以先使用带有FILE_IGNORE_NEW_LINES
标记的file()
加载文件,以忽略新行。然后,使用trim()
从行的开头和结尾删除空白,然后如果整行不等于 contactid:
则打印该行。
$lines = file($file1, FILE_IGNORE_NEW_LINES);
foreach($lines as $line_num => $line)
{
if (trim($line) !== 'contactid:') {
echo $line.'<br/>';
}
}
在这种情况下,使用正则表达式可能更容易:
$content = file_get_contents('file.txt');
echo preg_replace('/(contactid:\s*)/', '', $content);
正则表达式尸检:
()
- 表示捕获组contactid:
- 字面匹配字符contactid:
\s*
- 匹配任何空格字符零次或多次该声明表示:将contactid:<whitespace>
与''
匹配的所有内容。
答案 1 :(得分:0)
使用Amal的代码我想出了这个,它给了我想要的结果,但是我可以通过组合preg_replace()来清理代码:
$content = file_get_contents($file1, FILE_IGNORE_NEW_LINES);
$str = preg_replace('/(contactid: <br\/>\s*)/', '', $content);
$str2 = preg_replace('/(PND Done\s*)/', 'PND Done <br/>', $str);
echo preg_replace('/(PMF Done\s*)/', 'PMF Done <br/>', $str2);
但是它给了我一直在寻找的输出......
谢谢!