【问题标题】:PHP: str_replace how to move html tagPHP:str_replace 如何移动 html 标签
【发布时间】:2014-03-27 19:30:30
【问题描述】:

我是新手,我对 PHP str_replace 有一些问题,我需要建议

$a = '<a class="class1 clss2" href="http://www.somedomain.com/page1.php" target="_blank"><p class="myclass">';

我想这样替换html标签

之前:

<a class="class1 clss2" href="http://www.somedomain.com/page1.php" target="_blank"><p class="myclass">

之后:

<p class="myclass"><a class="class1 clss2" href="http://www.somedomain.com/page1.php" target="_blank">

我尝试编码,但 class="..." 和 href="..." 中的动态值有问题

请指教并感谢:)

【问题讨论】:

  • HTML 上的正则表达式可能非常困难,具体取决于它们需要的灵活性。当你说“喜欢”时,哪些部分会有所不同?
  • 您应该使用 DOMDocument 或类似的 DOM 操作工具来执行此操作。
  • 不要使用正则表达式解析 HTML。使用适当的 HTML 解析模块。 您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。请参阅htmlparsing.com/phpthis SO thread,了解如何使用已经编写、测试和调试过的 PHP 模块正确解析 HTML。

标签: php regex html-parsing


【解决方案1】:

以下代码仅适用于您在问题中提供的示例:

这是使用preg_replace() 而不是str_replace()

$a = '<a class="class1 clss2" href="http://www.somedomain.com/page1.php" target="_blank"><p class="myclass">';
$a = preg_replace("|(<a [^>]*>)(<p [^>]*>)|", "$2$1", $a);
print "$a\n";

在这里使用正则表达式,我将两个标签分成两组$1$2。在替换期间,我只是交换他们的位置,例如$2$1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    相关资源
    最近更新 更多