【发布时间】:2014-04-23 15:23:20
【问题描述】:
我想知道如何用php将特定行的特定单词/字符串替换为文本文件。
文本文件内容如下:
1|1|1
nikki|nikki@yahoo.com|nikki
nikki|nikki@gmail.com|nikki
nikki|nikki@hotmail.com|nikki
领域详情:
COLUMN:0 = $name,
COLUMN:1 = $email,
COLUMN:2 = $nickname,
更换细节:
COLUMN:0 = $newName,
COLUMN:1 = $newEmail,
COLUMN:2 = $newnickName,
从上面的内容你可以猜到查找/搜索是基于column:1。 Ans 如果找到匹配项,则替换 column:0 OR column:2 [基于选择]。
我尝试了[查找列:1]:
$fileData = file("file.txt");
foreach($fileData as $Key => $Val) {
$Data[$Key] = explode("|", $Val);
if ( trim($Data[$Key][1]) == $email ){
unset($fileData[$Key]);
//REPLACE TAKE PLACE HERE
break;
}
}
[用于替换]:
/* REPLACE NAME */
$file = "file.txt";
$oname = "|$name|";$nname = "|$newName|";
file_put_contents($file, str_replace($oname, $nname, file_get_contents($file)));
/* REPLACE NICKNAME */
$file = "file.txt";
$onickname = "|$nickname|";$nnickname = "|$newnickname|";
file_put_contents($file, str_replace($onickname, $nnickname, file_get_contents($file)));
但它正在替换所有匹配的“$name”。
我也尝试了以下方式:
$fileData[$Key] = str_replace($name, $newName, $fileData[$Key]);
file_put_contents($file,$fileData);
/* $name & $newName -:> $nickname & $newnickname
但它不起作用。
如果我想用“nikkigmail”替换“nikki@gmail.com”的列:0 [“nikki”],那么数据应该是:
1|1|1
nikki|nikki@yahoo.com|nikki
nikkigmail|nikki@gmail.com|nikki
nikki|nikki@hotmail.com|nikki
并且,如果想用“hotmail”替换“nikki@hotmail.com”的column:2 [“nikki”],那么:
1|1|1
nikki|nikki@yahoo.com|nikki
nikkigmail|nikki@gmail.com|nikki
nikki|nikki@hotmail.com|hotmail
我可以得到要更正的代码吗?
【问题讨论】:
-
你能发布你的预期输出吗?
-
@Shankar:感谢您的回复。我已经发布了预期的代码。 REPLACE CODE 1 效果很好,但这会替换文本文件中所有匹配的 $name,而不仅仅是 column:0 或 column:2。我只想替换 column:0 OR column:2 字符串,基于 column:1
-
我没有询问代码。我的意思是您希望文本文件的最终输出如何。 (替换后)
-
你试过这个步骤吗? 1:以读取方式打开文件。 2.替换所需位置的内容。 3.然后以写入模式打开文件。 4.然后写替换的内容。
-
LIKE:如果我想用“nikkigmail”替换“nikki@gmail.com”的第1列,那么nikki|nikki@yahoo.com|nikki
nikkigmail|nikki@gmail .com|nikki
nikki|nikki@hotmail.com|nikki