在PHP的文本的第一行替换单词的出现

时间:2013-06-04 13:14:53

标签: php replace

假设我有一个文字:

  

此行是此文本的第一行,名为%title%

     

这一行是第二行

     

第三行,%title%不应该被替换

     

...

     

最后一行

现在我想使用PHP,因此文本变为:

  

这一行是本文的第一行,名为MY_TITLE

     

这一行是第二行

     

第三行,%title%不应该被替换

     

...

     

最后一行

注意第三行的%title%

最好(最快)的方法是什么?

3 个答案:

答案 0 :(得分:4)

您只能将第一行加载到变量,而不是str_ireplace,然后将第一行+文件的其余部分重新组合在一起。

$data = explode("\n", $string);
$data[0] = str_ireplace("%title%", "TITLE", $data[0]);    
$string = implode("\n", $data);

它不是最有效的方式,但适合并快速编码。

答案 1 :(得分:4)

有两种方法:

  • 如果你确定,替换必须完成一次(即占位符总是在第一行,而且总是只有一个),你可以使用$result=str_replace('%title%','MY_TITLE',$input,1)

  • 如果无法保证,您需要将第一行分开:

$pos=strpos($input,"\n");
if (!$pos) $result=$input;
else $result=str_replace('%title%','MY_TITLE',substr($input,0,$pos)).substr($input,$pos);

答案 2 :(得分:3)

您可以使用preg_replace()只需一行代码;)

$str = "this line is the first line of this text called %title%\n
this line is the second one\n
the third line, %title% shouldn't be replaced\n
last line";

echo preg_replace('/%title%$/m','MY_TITLE',$str);

正则表达式的解释:

  • /%title%表示%title%
  • $表示行尾
  • m使输入的开头(^)和输入的结尾($)代码也分别捕获行的开头和结尾

<强>输出:

this line is the first line of this text called MY_TITLE
this line is the second one the third line, %title% shouldn't be replaced
last line