preg_match_all with windows / macOS9 行结尾
preg_match_all with windows / macOS9 line endings
我有以下代码来创建像
这样的小doxygen
public function parserAction () {
$code = file_get_contents('/www/htdocs/rumpho/application/controllers/parserStr.php');
preg_match_all ( '/(private|public)?\s*function\s*(.*?)\s*\((.*?)\)\s*{(?:\n|\t|$)*(?:\/\*\*((?:\n|.|\t)*?)\*\/)?/msi', $code, $matches );
var_dump( $matches );
die;
}
当 parserStr.php 的行尾使用 unix 编码时有效,但如果行尾使用 Windows 或 MacOS9 编码则无效。
想法?
感谢
您想要的特殊字符是 \R
匹配 \n
或 \r
或 \r\n
。然后你的正则表达式变成:
preg_match_all ( '/(private|public)?\s*function\s*(.*?)\s*\((.*?)\)\s*{(?:\R|\t|$)*(?:\/\*\*((?:\R|.|\t)*?)\*\/)?/msi', $code, $matches );
// here __^^ and __^^
我有以下代码来创建像
这样的小doxygenpublic function parserAction () {
$code = file_get_contents('/www/htdocs/rumpho/application/controllers/parserStr.php');
preg_match_all ( '/(private|public)?\s*function\s*(.*?)\s*\((.*?)\)\s*{(?:\n|\t|$)*(?:\/\*\*((?:\n|.|\t)*?)\*\/)?/msi', $code, $matches );
var_dump( $matches );
die;
}
当 parserStr.php 的行尾使用 unix 编码时有效,但如果行尾使用 Windows 或 MacOS9 编码则无效。
想法?
感谢
您想要的特殊字符是 \R
匹配 \n
或 \r
或 \r\n
。然后你的正则表达式变成:
preg_match_all ( '/(private|public)?\s*function\s*(.*?)\s*\((.*?)\)\s*{(?:\R|\t|$)*(?:\/\*\*((?:\R|.|\t)*?)\*\/)?/msi', $code, $matches );
// here __^^ and __^^