正则表达式模式在特定情况下不起作用

时间:2013-06-21 07:45:15

标签: regex preg-replace

我正在尝试清理cms数据库:所有内容都采用内联样式,我需要删除它们。

我有很多嵌套标记,所以我试图用<span>替换<h3>标记(我确定标题没有嵌套)然后使用HTMLPurifier我会清理其他标签。

我写这一行来用<span>替换<h3>标记:

$string = preg_replace( '/<span style="line-height: 17pt; font-family: helvetica; color: rgb\(85, 85, 85\); font-size: 13pt; font-weight: bold;">(.*?)<\/span>/', '<h3>$1</h3>',$string);

它适用于各种情况:

<span style="line-height: 17pt; font-family: helvetica; color: rgb(85, 85, 85); font-size: 13pt; font-weight: bold;">"Rischio obsolescenza" per i lettori Blu-ray</span>

也许“文中有问题。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

不,引号不是问题,正则表达式在我的测试中确实匹配。您确定在中间某处没有换行符,因为除非您使用/s修饰符,否则该点与它们不匹配。所以,请尝试

$string = preg_replace( '/<span style="line-height: 17pt; font-family: helvetica; color: rgb\(85, 85, 85\); font-size: 13pt; font-weight: bold;">(.*?)<\/span>/s', '<h3>$1</h3>',$string);