【问题标题】:PHP function can match HTML comment pattern and remove HTML codePHP 函数可以匹配 HTML 注释模式并删除 HTML 代码
【发布时间】:2015-07-03 07:01:43
【问题描述】:

我的服务器上的文件很少,我只需要帮助,只要在我的 HTML 中识别出以下 HTML 代码,PHP 函数就会匹配并删除以下代码块。

<!---- 728x90 Ad START ---->
    <iframe marginheight="" marginwidth="" src="728.html" height="728" width="90" frameborder="0" scrolling="no"></iframe>
<!---- END 728x90 Ad ---->

<!---- 160x600 Ad START ---->
    <iframe marginheight="" marginwidth="" src="160.html" height="160" width="600" frameborder="0" scrolling="no"></iframe>
<!---- END 160x600  Ad ---->


<!---- 300x250 Ad START ---->
    <iframe marginheight="" marginwidth="" src="300.html" height="300" width="150" frameborder="0" scrolling="no"></iframe>
<!---- END 300x250 Ad ---->

【问题讨论】:

  • 我没明白你到底在问什么?
  • 你能告诉我们你的PHP代码吗?这使我们更容易向您提供反馈。
  • 是否需要删除带有“Ad START”和“END Ad”字样的 cmets 以及它们之间的 HTML?
  • 我在我的静态 html 文件中使用 iframe 代码,现在我需要一个 php 函数,当我的广告 iframe 代码出现时,第一个 php 函数匹配注释星号和结束块,然后是注释之间的所有代码,已删除。

标签: php html regex


【解决方案1】:

通常使用正则表达式进行 HTML 解析是一种不好的做法。但是由于您的广告 cmet 具有相似的模式,我们可以使用正则表达式将它们删除。

<?php
$text = '
<!---- 728x90 Ad START ---->
    <iframe marginheight="" marginwidth="" src="728.html" height="728" width="90" frameborder="0" scrolling="no"></iframe>
<!---- END 728x90 Ad ---->

HTML code here

<!---- 160x600 Ad START ---->
    <iframe marginheight="" marginwidth="" src="160.html" height="160" width="600" frameborder="0" scrolling="no"></iframe>
<!---- END 160x600  Ad ---->

HTML code 2 here

<!---- 300x250 Ad START ---->
    <iframe marginheight="" marginwidth="" src="300.html" height="300" width="150" frameborder="0" scrolling="no"></iframe>
<!---- END 300x250 Ad ---->
';

//s modifier ignores newlines
$text = preg_replace('/<!-.*?Ad START.*?Ad.*?->/s', '', $text);
print $text;

输出:

HTML code here

HTML code 2 here

正则表达式 cmets

<!-      | starts with "<!-"
.*?      | something
Ad START | text "Ad START"
.*?      | something
Ad       | text "Ad"
.*?      | something
->       | ends with "->"

【讨论】:

  • 请解释以下代码:$text = preg_replace('//s', '', $text);跨度>
  • @Ahmediqbal 我为你评论了正则表达式
  • 哇! preg_replace 是一个非常强大的功能,我想我需要某种类型的循环来测试整个 html 代码,对我来说非常有用和优雅的解决方案,非常感谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 2011-07-23
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 2016-06-11
相关资源
最近更新 更多