2015-11-03 100 views
0

假设我有一个HTML文件中下面的文字叫index.html如何使用的preg_replace删除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关闭标签,但维持两者之间的所有,并输出到 文件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)*)来捕获所有字符,无论是否为 换行符。

+0

我也尝试设置$替换为$ 1,同样的问题。 –

+0

我的正则表达式正在工作 –

回答

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

谢谢,但与此问题是,它将取代我所有的字体出现,我只想要取代那些有时代新罗马,衬线字体大小= 3。 –

+0

我修改了正则表达式,你想要的。 –

+1

的解释是很好的答案和次优答案之间的区别... –

相关问题