从php中找到IP并在批处理脚本中替换它

从php中找到IP并在批处理脚本中替换它,php,Php,我试图用php从批处理文件中找到ip的值,即“1.1.1.1”。 这是我的批处理脚本的第一行 SET ip="1.1.1.1" 找到它后,我希望它被替换为一个新的IP。 我有这个: $str=implode("",file('C:\Users\Administrator\Desktop\script.bat')); $fp=fopen('C:\Users\Administrator\Desktop\script.bat','w'); $str=str_replace('1.1.1.1','12

我试图用php从批处理文件中找到ip的值,即“1.1.1.1”。 这是我的批处理脚本的第一行

SET ip="1.1.1.1"
找到它后,我希望它被替换为一个新的IP。 我有这个:

$str=implode("",file('C:\Users\Administrator\Desktop\script.bat'));
$fp=fopen('C:\Users\Administrator\Desktop\script.bat','w');
$str=str_replace('1.1.1.1','127.0.0.0',$str);
fwrite($fp,$str,strlen($str));
问题是我需要找到ip的值来替换它。值发生变化,我需要首先找到它,以便能够替换它。
如何找到变量IP的值并将其替换?

使用SET将把正在处理的变量声明为环境变量。要在php中访问它,请尝试$_ENV['ip']

,答案是:

$str = preg_replace('/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/','127.0.0.0',$str);

如果你能写那么多php,那么录制一个文本文件应该不难。那么,关于
sed-i的/SET ip=“[0123456789]*\[0123456789]*\[0123456789]*\[0123456789]*\[0123456789]*.[0123456789]*”/SET ip=“127.0.0.7”,您尝试了什么呢/''C:/Users/Administrator/Desktop/script.bat'
?我很难用str_-replace,但它需要preg_-replace…@Eugen我在上Windows@usersubuser我以为即使WIndows现在也有一个支持BASH的子系统?这就是我要找的$str=preg_replace('/\d{1,3}\.\d{1,3}\.\d{1,3}/','127.0.0.0',$str)@usersubuser,该代码将匹配任何与IP地址非常相似的内容,包括许多不相似的内容。此外,问题中所述问题的答案如下。也许您应该澄清问题本身。但这不是一个准确的正则表达式,因为类似
256.256.302.333的字符串将被视为“IP地址”,而实际上不是。一个精确的数字可以是这样的:(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)\{3}(:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9])$