0

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

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

然后我用分隔符 # 包围它,所以它可以与 preg_replace 一起使用,但是现在它不起作用。

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

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

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

4

1 回答 1

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

于 2012-07-16T00:07:38.837 回答