0

このテストツールhttp://regexpal.com/を使用してテストしたときに機能する文字列内のすべてのコメント /* */ を見つけるためにphp正規表現を作成しました

/\*(.*\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最後の は「複数行」に一致するため、コメントが複数行にまたがる場合でも、それらに一致できます。デフォルトの一致は 1 行です。

参照用に PCRE を参照してください: http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

于 2012-07-16T00:07:38.837 に答える