PHP查找并替换多个类似的条目
我有一个包含大约60行的文本文件。其中有两行:PHP查找并替换多个类似的条目,php,search,replace,Php,Search,Replace,我有一个包含大约60行的文本文件。其中有两行: DeviceIP 10.0.0.1 DeviceIP 10.2.36.4 我有一个PHP表单,它有$device1&$device2 如何在文件中查找和替换,将第一个DeviceIP替换为$device1,将第二个替换为$device2 很明显,IP地址会改变,所以我无法搜索这些地址。我知道如何在一场比赛中做到这一点,但不是多次 谢谢仅替换第一次出现的: $str = file_get_contents('yourtextfile.txt');
DeviceIP 10.0.0.1
DeviceIP 10.2.36.4
我有一个PHP表单,它有$device1
&$device2
如何在文件中查找和替换,将第一个DeviceIP替换为$device1,将第二个替换为$device2
很明显,IP地址会改变,所以我无法搜索这些地址。我知道如何在一场比赛中做到这一点,但不是多次
谢谢仅替换第一次出现的:
$str = file_get_contents('yourtextfile.txt');
$str = str_replace("DeviceIP", $device1, $str, 1); // Replace only first occurrence
$str = str_replace("DeviceIP", $device2, $str, 1); // Replace second occurrence
file_put_contents('yourtextfile', $str);
这似乎有效:
$test = file('test');
$result = ''; $count ='1';
foreach($test as $v) {
if (substr($v,0,8) == 'DeviceIP' && $count =='1') {
$result .= "DeviceIP $device1\n"; $count++;
} elseif (substr($v,0,8) == 'DeviceIP' && $count =='2') {
$result .= "DeviceIP $device2\n";
} else {
$result .= $v;
}
}
file_put_contents('test', $result);
但是这是最好的方法吗?你可以这样试试
$arr=array('10.0.0.10','10.22.32.12');
$handle = fopen("test.txt", "r");
$str="";
if ($handle) {
$count=0;
while (($buffer = fgets($handle, 4096)) !== false) {
if(preg_match("/DeviceIP/", $buffer)){
$str.= "DeviceIP ".$arr[$count];
$str.="\n";
}
$count++;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
file_put_contents('test',$str);
它将用数组值替换字符串引用。
这是逐行读取并替换匹配,我认为这很好。IMHO这不是OP要求的,因为他想更改IP而不是字符串DeviceIP,所以stru替换将不起作用(这里有regex的味道,但你不能仅用regex更改第n次出现)@Chizzle这是我想更改的IP地址,而不是DeviceIP。如果文件的IP地址以换行符分隔,您可以使用file()。检查一下关于逐行循环的答案:看看这一个你想用$device1值替换IP地址(10.0.0.1)吗?是的,这就是我要做的。每次你检查子字符串和计数时都在这里。最好逐行读取文件并替换所需内容