使用正则表达式给HTML类和ID添加前缀?

3

这是一个关于“如何给所有CSS类和ID添加前缀”的附加说明:There a quick way to add prefixes to all CSS classes & ID's?

我需要查找并替换以下字符串:

id="xyz"

将它们替换为id="prefix_xyz"

这会变得有些棘手:

class="one two three"

他们所有的东西都需要一个前缀。有什么想法吗?谢谢!

如果你使用正则表达式解析HTML,那么你就屈服于它们和它们邪恶的方式,注定我们所有人都要为那个名字无法在基本多语言平面中表达的人类劳作。他来了。 - James Montagne
1个回答

4

通过搜索和替换所有的idclass值来实现此操作,示例

$dom = new DomDocument();
$dom->loadHTML($html);
$xpath = new DomXpath($dom);

$res = $xpath->query('//@class|//@id');
foreach($res as $attr)
{
    $value = explode(' ', $attr->value);
    foreach($value as &$set)
    {
        $set = 'prefix_'.trim($set);
    }
    unset($set);
    $attr->value = implode(' ', $value);
}

echo $dom->saveHTML();

似乎对我的HTML做了一些奇怪的事情,例如替换<div class="prefix_cls"/>。 - Brooklyn Nicholson
以上问题有什么想法吗? - Brooklyn Nicholson
你的意思是什么?哪个问题?输入为HTML,输出为HTML。你使用的是哪种编码? - hakre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接