我给自己设定了这个听起来相当简单的挑战,但现在我一直在努力弄清楚如何将类名注入(inject)到 <body>
中。我的文档的 dom 元素。
复杂性是因为我无法控制通过 file_get_contents
获得的 HTML 标记功能(第三方通过 FTP 提供文件)。
所以 body
元素可以是多种不同的方式,例如:
<body>
<body id="my-id" data-attribute="content">
<body data-attribute="content">
<body class="already-existing-class" id="my-id" data-attribute="content">
等等……甚至上述属性的顺序都不在我的控制之下,所以你可能有一个 class=
在 id=
之前等等。
我想你们都明白我在这里谈论的复杂性; (我希望)。
我基本上需要的是一种使用 preg_replace()
的方法注入(inject)一个新类到或者一个现有的class
body
上的属性(如果已经存在)或添加 class
在其中添加我的新类。
如有任何帮助,我们将不胜感激。
如果已经有人回答过,请随时指出。我尝试搜索,但使用如此通用的术语很难找到我要找的东西。
感谢阅读。
J.
最佳答案
要提供一个close 仅 RegEx 的解决方案,只要多余的空格不打扰您,它就可以工作;-)
<?php
$pat = '/(<body) ?(([^>]*)class="([^"]*)")?/';
$inp = '<body>
<body id="my-id" data-attribute="content">
<body data-attribute="content">
<body class="already-existing-class" id="my-id" data-attribute="content">
<body id="my-id" data-attribute="content" class="abc">';
echo preg_replace($pat, '$1 $3 class="$4 new-class" ', $inp);
?>
检查 ideone用于输出。
关于php - 如何使用 preg_replace 将类名注入(inject) html 节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513970/