fjd*_*ont 0 html php regex greedy regex-greedy
我正在尝试匹配HTML源代码中的特定span-tags.
lang-attribute和标记的内部HTML用作返回新字符串的函数的参数.
我想用被调用函数的结果替换旧标签,属性和内容.
主题是这样的:
<p>Some codesnippet:</p>
<span lang="fsharp">// PE001
let p001 = [0..999]
|> List.filter (fun n -> n % 3 = 0 || n % 5 = 0)
|> List.sum
</span>
<p>Another code snippet:</p>
<span lang="C#">//C# testclass
class MyClass {
}
</span>
Run Code Online (Sandbox Code Playgroud)
为了提取lang属性和内容的值,我使用以下表达式对这些值进行分组:
/(<span lang="(.*)">(.*)</span>)/is
Run Code Online (Sandbox Code Playgroud)
由于正则表达式趋于贪婪,因此该表达式与完整主题匹配,而不仅仅是一个span-tag及其内容.
我如何设法匹配一个span-tag?
我们永远不会重新考虑它:不要使用正则表达式来处理HTML!
相反,使用DOMDocument::loadHTML.
它允许您使用DOM操纵HTML数据,这更加强大和简单:您将能够:
getElementById和getElementsByTagName简单提取等方法,DOMXPath该类对文档进行XPath查询DOMElements和getAttribute/ 等方法setAttribute真的:花点时间学习DOM:这是一项很棒的投资!