我是PHP的新手。
我想用PHP替换我的txt.file中的一些空格。 这是我的.txt文件(text.txt):
A Chatbot record
Hello, how are you?
I'm Fine
这就是我想要的
A chatbot record
<category>
<pattern>Hello, how are you?</pattern>
<template>I'm Fine</template>
</category>
我已经使用str_replace(" ","<category><pattern>","\n")
尝试了一些PHP代码,但它不起作用,我该怎么办?
我的实验失败了:
<?php
$myfile = fopen("text.txt", "r+") or die("Unable to open file!");
str_replace(" ", "<category><pattern>", "\n"); //I know it's wrong in here, please help me to fix it!
echo fread($myfile,filesize("text.txt"));
fclose($myfile);
?>
谢谢,抱歉我的英文不好
答案 0 :(得分:1)
正则表达可能是去这里的方式。
<?php
$string = file_get_contents("text.txt");
$replaced = preg_replace("/A Chatbot record(\W+)([^\n]+)\W+([^\n]+)/mi", "A chatbot record\n<category>\n<pattern>$2</pattern>\n<template>$3</template>\n</category>", $string);
file_put_contents("text.txt", $replaced);
这可以匹配所有模式
http://sandbox.onlinephpfunctions.com/code/95184665ec627cd9354d67853bb696865d51a03d
答案 1 :(得分:0)
logged in!
myurl: https://twitter.com/HansHenrik_
following tianwm (53056654)
following theburakcinar (2335591322)
following DnR_iData (260134525)
following 7wData (1713417312)
following deepudeepana (783199483404226560)
following remco_verhoef (201001391)
following PaulVlasin (1079477118)
^C
对我来说,最好的办法是将你的String拆分成一个数组,这样你就可以更轻松地工作了。这是数组,感谢$string = 'A Chatbot record
Hello, how are you?
I\'m Fine';
$explode = preg_split("#\n\s*\n#Uis", $string);
echo $explode[0];
echo "<category>";
echo "<pattern>".$explode[1]."</pattern>";
echo "<template>".$explode[2]."</template>";
echo "</category>";
:
preg_split
答案 2 :(得分:0)
你应该这样做:
<?php
$myfile = fopen("text.txt", "r+") or die("Unable to open file!");
str_replace(" ", "<category><pattern>", $myfile);
echo fread($myfile,filesize("text.txt"));
fclose($myfile);
?>
如果您仍有问题,可能是因为您的文件不包含,而且您可能正在寻找\ n(新行字符)。
<?php
$myfile = fopen("text.txt", "r+") or die("Unable to open file!");
str_replace("\n", "<category><pattern>", $myfile);
echo fread($myfile,filesize("text.txt"));
fclose($myfile);
?>
问题是你没有替换文件中的字符串,而是在字符串“\ n”中替换“”。
答案 3 :(得分:0)
<?php
$string = 'A Chatbot record
Hello, how are you?
I\'m Fine';
$reg = '#^(.*\n)\n(.*)\n\n(.*)#';
$replace = '$1<category>
<pattern>$2</pattern>
<template>$3</template>';
echo preg_replace($reg, $replace, $string);
正则表达式比爆炸或strpos解决方案更灵活。 (注意:这里仍然缺少。
问题仍然是所有文本总是在一行