preg_在一些引号之间替换PHP
我对preg_replace有点困惑,因为我以前没有使用过regex。 我做了一些搜索,找不到任何适合我的情况的东西 我的日志包含与服务器的连接,如下所示:preg_在一些引号之间替换PHP,php,regex,preg-replace,Php,Regex,Preg Replace,我对preg_replace有点困惑,因为我以前没有使用过regex。 我做了一些搜索,找不到任何适合我的情况的东西 我的日志包含与服务器的连接,如下所示: Username connected, address "123.123.123.123:1234" 我希望preg_replace查找此零件: address "123.123.123.123:1234" 并将其更改为: address "snip" 基本上把IP地址剪掉,这样这些日志就可以在网站上公开发布了 这是我目前正在测试的东
Username connected, address "123.123.123.123:1234"
我希望preg_replace查找此零件:
address "123.123.123.123:1234"
并将其更改为:
address "snip"
基本上把IP地址剪掉,这样这些日志就可以在网站上公开发布了
这是我目前正在测试的东西
$new_log = preg_replace('/\address\s"(.*)"/', '', $old_log);
我只需要帮助您更正正则表达式。这应该适合您: (在这里,我将文件的所有行放入一个数组中。在此之后,我将部分
地址“[ip]”
替换为地址“snip”
的。最后,我只需将数组再次保存在文件中)
- \b断言单词边界处的位置(^\w |\w$|\w\w |\w\w)
- 地址与字符地址完全匹配(区分大小写)
- \s?匹配任何空白字符[\r\n\t\f]
- 量词:?在0到1次之间,尽可能多次,根据需要回馈[贪婪]
- \“逐字匹配字符”
- *?匹配任何字符(换行符除外)
- 量词:*?在零次和无限次之间,尽可能少的次数,根据需要扩展[lazy]
- \“逐字匹配字符”
Username connected, address "123.123.123.123:1234"
Username connected, address "123.123.123.123:1234"
之后:
Username connected, address "snip"
Username connected, address "snip"
旁注:
如果您想阅读更多关于正则表达式的内容,还可以提供一些有用的链接:
*
需要使用?
减少贪婪。而且\a
转义不属于那里。您可能应该使用/address\s+“[\d.:]+”/
进一步限制它,其中[\d.:]+
匹配任何数字、点、冒号的组合。哇,这里的每个人都非常有用!有人也修复了我原来的帖子。非常感谢大家:)是的!这很好用。您可能知道有什么好的教程可以更好地学习正则表达式吗?array\u map
是无用的,因为preg\u replace
可以将数组作为主题参数(在这种情况下显然返回数组)。为什么要使用捕获组?没有什么可捕捉的。您确定需要第二个单词边界吗?考虑一下\K
特性,你更喜欢贪婪的否定字符类:[^”]*
而不是懒惰的*?
@CasimiretHippolyte谢谢,完全忘记了preg_replace()
也可以接受数组。(不要问第二个单词的边界,不知道我在那里想了什么)
Username connected, address "123.123.123.123:1234"
Username connected, address "123.123.123.123:1234"
Username connected, address "snip"
Username connected, address "snip"