我正在尝试编写一个匹配单行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);
答案 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);