将PHP注释构造与REGEX匹配

时间:2014-10-26 19:52:53

标签: php regex

我正在尝试编写一个匹配单行php注释的正则表达式,以双正斜杠开头,一直持续到行尾。我的正则表达式模式应该匹配双正斜杠之后的每个字符,而负面Lookbehind结构将匹配限制为新换行符之前的每个字符。

目前,正则表达式模式仅匹配单行字符串,但在字符串被分成多个换行符时失败。我该如何解决这个问题?

$detail = '//This first line is a comment 
This second line is not a comment.';
function parser($detail) 
{
    if (preg_match('#(//.*)((?<!.)\r\n)$#', $detail)) 
    {
        $errors[] = 'Password should include uppercase and lowercase characters.';
        $detail = preg_replace('#(//.*)((?<!.)\r\n)$#','<span class="com"   style="color:red">$1</span>', $detail);
    return $detail;
    }
}
echo parser($detail);

1 个答案:

答案 0 :(得分:0)

下面的代码片段回答了我的问题。匹配以双正斜杠开头的字符串的任何行,并以除新行之外的任何字符结束。将匹配的行隔离为样式的标记。然后,该函数返回完整字符串,并根据需要设置注释样式。

$detail = '//This line is a comment
This second line is not a comment
This third line is not a comment';
function parser($detail) 
{
    $detail = preg_replace('#//(.*)#','<span style="color:red">//$1</span><br/>', $detail);
    return $detail;
}
echo parser($detail);