preg_replace替换IP

时间:2013-10-29 17:48:09

标签: php regex

我是regex等的初学者,我不知道如何为它构建过滤器。我基本上想要做的是:

我有一个.txt文件,带有IP和unix时间戳,例如11.11.11.11:1393598(IP:timestamp),我想用regex做的是替换与某个IP关联的时间戳,所以如果文本文件中有3个ip和时间戳(用空格分隔)我想只用ip 11.11.11.11 (11.11.11.11:343434 to 11.11.11.11:999999)替换一个,现在我对整个正则表达式的东西全新,所以我真的不知道该做什么,所以我没有尝试过的代码:/

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

$string = '11.11.11.11:1393598';
$search = preg_quote('11.11.11.11');
$replace = '999999';
$string = preg_replace("/($search):\d+/", "$1:$replace", $string);

答案 1 :(得分:1)

未经测试,我不太了解php。

 # $str = preg_replace_callback('/(11(?:\.11){3}:)(?:(343434)|(999999))/',
 #              function( $matches ){
 #                   $repl = "999999";
 #                   if ( $matches[3] != "" ) {
 #                        $repl = "222222";
 #                   }
 #                   return $matches[1] . $repl;
 #              },
 #              $str);
 # 
 # 

 # (11(?:\.11){3}:)(?:(343434)|(999999))

 (                                  # (1 start)
      11
      (?: \.11 ){3}
      :
 )                                  # (1 end)
 (?:
      ( 343434 )                    # (2)
   |  ( 999999 )                    # (3)
 )