如何使用 php htmlentities 转义 <code> 标签中的代码,即使标签具有属性
How to escape code in <code> tag with php htmlentities, even if tag has attributes
所以实际上有人 post 在这里提出了一个绝妙的解决方案 How can I escape all code within <code></code> tags to allow people to post code?
问题是只有 <code></code>
才有效。但是,例如 <code id="lol"></code
这会中断,因为它包含一个属性。我该如何解释这一点,以便在代码标签内严格转义字符串,无论它是否具有任何属性。
如果有明显的解决方案,我深表歉意。正则表达式让我做噩梦。
编辑
正如我最初在问题中解释的那样,据称重复的 post 不考虑带有 class 或任何其他属性的 <code>
标签。
尽管我在上面发表了评论,但我会尽力提供一个正则表达式供您使用。但是,我会强调 不 建议使用正则表达式,而是使用 HTML 解析器。
您的正则表达式应如下所示:
<\s*code(.*?)>(.+?)<\s*\/code\s*>
稍微分解一下,
\s*
匹配零个或多个空白字符。
code
匹配文字字符串“code
”。
.*?
是零个或多个字符的 lazy 匹配。它将匹配所有内容(如果有的话)直到标签的末尾。
(.+?)
是一个 捕获组 ,包含一个或多个字符的惰性匹配。如果不出意外,您的 <code>
标签将永远不会完全空白(因为它们之间必须至少有一个字符)。
最后,<\s*\/code\s*>
匹配结束标记,可能包含空格。请注意,斜杠 (/
) 字符已被转义,因为它必须出现在几乎所有正则表达式中。
所以实际上有人 post 在这里提出了一个绝妙的解决方案 How can I escape all code within <code></code> tags to allow people to post code?
问题是只有 <code></code>
才有效。但是,例如 <code id="lol"></code
这会中断,因为它包含一个属性。我该如何解释这一点,以便在代码标签内严格转义字符串,无论它是否具有任何属性。
如果有明显的解决方案,我深表歉意。正则表达式让我做噩梦。
编辑
正如我最初在问题中解释的那样,据称重复的 post 不考虑带有 class 或任何其他属性的 <code>
标签。
尽管我在上面发表了评论,但我会尽力提供一个正则表达式供您使用。但是,我会强调 不 建议使用正则表达式,而是使用 HTML 解析器。
您的正则表达式应如下所示:
<\s*code(.*?)>(.+?)<\s*\/code\s*>
稍微分解一下,
\s*
匹配零个或多个空白字符。
code
匹配文字字符串“code
”。
.*?
是零个或多个字符的 lazy 匹配。它将匹配所有内容(如果有的话)直到标签的末尾。
(.+?)
是一个 捕获组 ,包含一个或多个字符的惰性匹配。如果不出意外,您的 <code>
标签将永远不会完全空白(因为它们之间必须至少有一个字符)。
最后,<\s*\/code\s*>
匹配结束标记,可能包含空格。请注意,斜杠 (/
) 字符已被转义,因为它必须出现在几乎所有正则表达式中。