如何从帖子内容中删除<div>标签

时间:2016-11-03 20:30:32

标签: wordpress preg-replace

我已将我的内容从Yii网站迁移到Wordpress,我的所有帖子都填充了带有各种样式和ID和类的div标签,我想使用模式将它们全部删除。我在互联网上搜索了这个函数,但它确实删除了结束标记,但没有包含其他属性的开始标记,如样式id或类:

  function remove_divs($data) {
    $filteredContent = preg_replace(array('/<\s*div.*?>/', '</div>'), '', $data['post_content']);
    $data['post_content'] = $filteredContent;

    return $data;
}
add_filter('wp_insert_post_data', 'remove_divs', 99);

你能帮我弄清楚什么不起作用吗?

2 个答案:

答案 0 :(得分:1)

受到前一个答案的启发,我编辑了我的功能,它运作得很好。这是代码:

function remove_divs($data) {
    $filteredContent = preg_replace(array('/<\s*div[^>]*>/', '</div>'), '', $data['post_content']);
    $data['post_content'] = $filteredContent;

    return $data;
}
add_filter('wp_insert_post_data', 'remove_divs', 99);

感谢您的回答!

答案 1 :(得分:0)

你可以尝试这种模式

$pattern = "/<div[^>]*>(.*?)<\/div>/";
$content = '<div class="test">Alpha Beta Gamma</div>Test<div class="best">Delta Gamma Eta</div>';
preg_match_all($pattern, $content, $match);
var_dump($match);