php使用str_replace删除特定单词后面的一行

时间:2013-02-15 16:21:26

标签: php str-replace

文件中有文字作为示例:

<div class="from">jack</span></div>
hey u

<div class="from">ron</span></div>
bye

我正在尝试删除“”之后的新行标记并替换“|”

我需要的结果是:

<div class="from">jack</span></div>|hey u

<div class="from">ron</span></div>|bye

我尝试了这个,但我认为我弄错了因为它完成了这项工作。

$string = file_get_contents($filename);
$string = str_replace('/(<\/span><\/div>\r\n)', '|', $string);
file_put_contents($filename, $string);

正确的方法是什么?

谢谢

3 个答案:

答案 0 :(得分:0)

<?php
$string = '<div class="from"><span>jack</span></div>
hey u';

echo preg_replace('/\r\n/', '|', $string);

答案 1 :(得分:0)

$file_handle = fopen($filename, "r");
$text = "";
while (!feof($file_handle)) {
   $line = fgets($file_handle);
   if (strpos($line,'<div>') !== false) {
      $line = preg_replace('/\r\n/', '|', $line)
   }
   $text .= $line;
}
file_put_contents($filename, $text);
fclose($file_handle);

如果要逐行读取文件,如果该行有标记,它将替换\ n \ r,然后在最后将所有行写回文件。

答案 2 :(得分:-1)

这取决于使用的行结尾,有三种可能的结尾,\ n,\ r \ n和\ r。

试试这个:

$string = str_replace('/(<\/span><\/div>\n)', '|', $string);

该字符串中的第一个斜杠也是可疑的,所以试试这个:

$string = str_replace('(<\/span><\/div>\r\n)', '(<\/span><\/div>|', $string);