0

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

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

如何使用 php preg_replace 替换 HTML 标签

对于简单的命令,我可以理解,但是对于 preg_replace 上带有诸如~, $1, /n,等字母的搜索命令,我根本不明白...

如果我想更换

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

进入

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

如何实现 preg_replace?

非常感谢您的建议。

4

2 回答 2

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);
}
于 2013-01-22T10:38:40.663 回答
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);
?>

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

于 2013-01-22T10:39:51.867 回答