使用带有正则表达式的php preg_replace

时间:2012-07-15 23:14:37

标签: php regex preg-replace

我创建了一个php正则表达式来查找字符串中的所有注释/ * * /,该字符串在我使用此测试工具http://regexpal.com/进行测试时起作用

/\*(.*\s){0,}.*\*\/

然后我用分隔符包围它#所以它适用于preg_replace但是现在它不起作用。

#/\*(.*\s){0,}.*\*\/#

$fileContents = preg_replace("#/\*(.*\s){0,}.*\*\/#","Replacement Text",$fileContents);

当我回显$ fileContents时,没有打印出来。我做错了什么?

1 个答案:

答案 0 :(得分:0)

<?php 
  $fileContents = "Hello /* comment here */ World"; 
  $fileContents = preg_replace('#\/\*.*\*\/#m','',$fileContents); 
  echo $fileContents; // outputs Hello World

  $fileContents = <<<END
Hello
/*
 * Comment spanning several lines..
 *
 */
Earth
END;

  $fileContents = preg_replace('#\/\*.*\*\/#m','',$fileContents); 
  echo $fileContents; // outputs Hello Earth
?> 

正则表达式末尾的m将匹配“多行”,因此当评论跨越多行时,它仍然可以匹配它们。默认匹配是单行。

请参阅PCRE以供参考:http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php