如何从 post 内容中删除 <div> 标签
How to remove <div> tags from post contents
我已将我的内容从 Yii 站点迁移到 Wordpress,我所有的帖子都充满了 div 带有各种样式和 ID 的标签以及 class 我想使用一种模式将它们全部删除。我在互联网上搜索并附带了此功能,但它确实删除了结束标签,但没有删除包含其他属性(如样式 id 或 class:
的开始标签
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);
你能帮我弄清楚什么地方不起作用吗?
你可以试试这个模式
$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);
受到之前答案的启发,我编辑了我的函数并且它运行得很好。这是代码:
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);
感谢您的回答!
我已将我的内容从 Yii 站点迁移到 Wordpress,我所有的帖子都充满了 div 带有各种样式和 ID 的标签以及 class 我想使用一种模式将它们全部删除。我在互联网上搜索并附带了此功能,但它确实删除了结束标签,但没有删除包含其他属性(如样式 id 或 class:
的开始标签 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);
你能帮我弄清楚什么地方不起作用吗?
你可以试试这个模式
$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);
受到之前答案的启发,我编辑了我的函数并且它运行得很好。这是代码:
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);
感谢您的回答!