如何使用preg_replace删除HTML标记和属性,但在

时间:2015-11-03 20:12:14

标签: preg-replace

假设我在名为index.html的HTML文件中包含以下文本:

<FONT FACE="Times New Roman, serif">
  <FONT SIZE=3>
    <SPAN STYLE="background: transparent">
      This is my text and it spans lines
      within a text file
      like this.
    </SPAN>
  </FONT>
</FONT>

我想要删除FONT标签和FONT属性 FONT关闭标签,但保持介于两者之间的所有内容,并输出到 档案output.html

我写了一个简短的PHP程序,我认为会这样做,但事实并非如此 找到模式字符串:

$pattern = '<FONT FACE="Times New Roman, serif"><FONT SIZE=3>((.|\n)*)</FONT></FONT>';
$replacement = '\1';
file_put_contents('./output.html', preg_replace($pattern, $replacement,
                  file_get_contents('./index.html', FILE_USE_INCLUDE_PATH)));

未找到该模式。任何人都可以发现代码的问题吗?

我是否使用>((.|\n)*)来捕获所有字符,无论是否 换行与否。

1 个答案:

答案 0 :(得分:0)

preg_replace('~<font[^>]*face=\"Times\s+New\s+Roman\s*\,\s*serif\"[^>]*>\s*<font[^>]*size=\'?3\"?[^>]*>(.*?)<\/font>~is', '\1', YOUR_STRING);