我有这个PHP代码,它提取HTML注释的内容。 (我知道它不适用于不是连续字符串的注释,但没关系)。
preg_match_all('<!--\*\*(\w+)\*\*-->', $content, $matches)
返回
Array (
[0] => Array ( [0] => !--**navigation**-- [1] => !--**form**-- [2] => !--**footer**-- )
[1] => Array ( [0] => navigation [1] => form [2] => footer ) )
这很好,除了那个“&lt;”和“&gt;”已从第一个子数组中的匹配中删除字符。有什么方法可以保留它们吗?
答案 0 :(得分:2)
问题不是使用正则表达式分隔符,请使用:
preg_match_all('~<!--\*\*(\w+)\*\*-->~', $content, $matches);
或者更好地使用s
(DOTALL)标记与.*?
匹配多行注释:
preg_match_all('~<!--\*\*(.*?)\*\*-->~s', $content, $matches);