PHP,preg_replace,用标签attr替换标签

时间:2013-01-22 10:22:38

标签: php replace preg-replace

我是否可以详细解释如何使用php替换当前attr的标签?

我阅读了手册和一些参考资料

How to use php preg_replace to replace HTML tags

对于我能理解的简单命令,但对于preg_replace上的搜索命令,如~, $1, /n,等字母,我根本不理解......

如果我想替换

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

进入

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

如何实现preg_replace?

非常感谢你的建议。

2 个答案:

答案 0 :(得分:1)

对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);
}

答案 1 :(得分:1)

您需要了解正则表达式,this site是一个有用的资源;

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);
?>

您需要了解反向引用,以便使用字符串的匹配位来创建新的引用。简而言之,您可以使用$ replace标记中包含的$ 1标记稍后检索包含在括号中的模式部分。您可以根据需要多次反向引用。 您可以在正在处理正则表达式here时对其进行测试,希望这会有所帮助。