我目前正在寻找一种解决方案,我可以用它来确定选定的 IP 地址是否在字符串中,以将它们替换为private一词。我的问题是我不仅想替换始终相同的 IP,还想替换范围。
例如,我想找出一个字符串是否包含以 123 开头的 IP。如果是,请将 IP 地址更改为单词private
例子:
123.55.33.10
123.100.10.110
123.1.5.1
问题是我不知道确切的 IP 地址,只知道它们是如何开始的,所以我无法通过检查字符串长度等来审查它们。
下一个问题是我想替换各种 ip,例如以 123 开头的,然后是一些以 66 开头的,依此类推。因此,对于我的问题,如果您能帮助我提出一个基本上可以工作的解决方案,那就太好了:
$ips = array("123.","66.","112.");
并且该解决方案基本上会检查一个字符串是否包含其中一个数组值,然后将 IP 替换为private一词- 但不仅仅是 123。而是任何可能的整体组合,意味着不仅仅是$string = str_replace("123.","",$string);
但是用私有替换整个IP地址
这个请求的原因:我正在为一所学校构建一个小脚本,我需要用单词private替换 IP ,因为搜索功能返回带有 IP 地址的结果,我不想在结果中显示它们。
该字符串可能如下所示:Hans 在 2012 年 12 月 10 日使用 IP 123.1.1.1 发布
所以我的任务是显示:汉斯在 2012 年 12 月 10 日以 IP私人发布
综上所述,无论字符串是:Hans 在 10.12.2012 上发布的 IP 123.112.12.1 或 Hans 在 10.12.2012 上发布的 IP 123.12.15.12 或 Hans 在 10.12.2012 上发布的 IP 123.24.0.100
该解决方案会将任何以我的数组中的值开头的 IP 替换为private
感谢您花时间阅读本文:)
编辑:
我用这个字符串尝试了解决方案,但它没有按预期工作:
<?php
$ip = "The date is 12.10.2012 and this ip 123.1.2.12 should not show but 144.100.1.11 should show while 66.122.11.9 should not show";
$ip = preg_replace('/^(123 | 66 | 112) \. [\d.]+$/x', "private", $ip);
echo $ip;
?>
最后应该显示的是:
日期是 12.10.2012,这个 ip private不应该显示,但是 144.100.1.11 应该显示,而private不应该显示