PHP,preg_replace函数,用标签替换ATTR标签(PHP, preg_replace,

2019-08-07 18:34发布

我能得到一个详细的有关解释我是如何可以替换标签与当前属性使用PHP?

我读手册和一些referencs

如何使用PHP的preg_replace来替换HTML标签

对于简单的命令,我可以理解,但对于像字母上的preg_replace搜索命令~, $1, /n,和等,我不明白在所有...

如果我想更换

 <script src="core.js"></script>

 <temp src="library/js/core.js"></temp>

我怎样才能实现的preg_replace?

非常感谢您的建议。

Answer 1:

你需要了解的正则表达式, 这个网站是一个有用的资源;

用了preg_replace一个简单的例子可以是这样的 - 它可以改善,但希望会给你的想法...

<?php
$string = '<script src="core.js"></script>';
$pattern = '/<script src\s?=\s?['|"](.*)['|"]><\/script>/i';
$replace = ' <temp src="library/js/$1"></temp>';
$result = echo preg_replace($pattern, $replace, $string);
?>

你需要了解反向引用,以使用字符串匹配的位,以创建新的一个。 简单地说,是被包裹在括号中的图案部分可在以后与1 $令牌,你包括在$替换字符串检索。 您可以反向引用多次,你想要这样。 您可以测试正则表达式,你都对他们的工作在这里也一样,希望这有助于。



Answer 2:

这是几乎从来没有使用正则表达式为HTML是一个好主意。 考虑DOM ,则是这样的:

foreach($dom->getElementsByTagName('script') as $script) {
    $temp = $dom->createElement('temp');
    /*
     * create src attribute, append it to $temp and copy value from $script
     * I leave that up to you.
     */
    $script->parentNode->replaceChild($temp, $script);
}


文章来源: PHP, preg_replace, replace tag with tag attr