使用PHP

时间:2017-07-10 09:59:21

标签: php string replace aiml

我是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("&nbsp;","<category><pattern>","\n")尝试了一些PHP代码,但它不起作用,我该怎么办?

我的实验失败了:

<?php
$myfile = fopen("text.txt", "r+") or die("Unable to open file!");
str_replace("&nbsp;", "<category><pattern>", "\n"); //I know it's wrong in here, please help me to fix it!
echo fread($myfile,filesize("text.txt"));
fclose($myfile);
?>
  

谢谢,抱歉我的英文不好

4 个答案:

答案 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("&nbsp;", "<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解决方案更灵活。 (注意:这里仍然缺少。

问题仍然是所有文本总是在一行