PHP识别Wordpress博客文章中的HTML标记和方括号占位符

PHP识别Wordpress博客文章中的HTML标记和方括号占位符,wordpress,parsing,tags,Wordpress,Parsing,Tags,我正在将一个站点从Wordpress迁移到一个定制平台(已经由以前的开发人员创建)。现有的wordpress博客似乎允许管理员粘贴HTML代码,因此我快速浏览了一些iFrame、图像等 我需要更新新的博客,以支持已使用的现有HTML内容。 还有一些Wordpress方括号占位符-例如 [caption id="attachment_1281" align="aligncenter" width="350"] 有数百个帖子,所以手动浏览是不明智的 我需要遍历wp_posts表中的所有帖子,并确定

我正在将一个站点从Wordpress迁移到一个定制平台(已经由以前的开发人员创建)。现有的wordpress博客似乎允许管理员粘贴HTML代码,因此我快速浏览了一些iFrame、图像等

我需要更新新的博客,以支持已使用的现有HTML内容。 还有一些Wordpress方括号占位符-例如

[caption id="attachment_1281" align="aligncenter" width="350"]
有数百个帖子,所以手动浏览是不明智的

我需要遍历wp_posts表中的所有帖子,并确定使用的任何其他HTML元素。我知道RegEx通常不赞成使用HTML,但不确定这里的最佳方法是什么


我已经到了将所有“已发布”的帖子从WP中提取到数据库的阶段,但是您建议如何解析“内容”字段并识别所有html标记和这些方括号标记?

我认为您在这里对正则表达式的看法是正确的。至于括号,我看没有其他选择。我们可以使用一个循环孔

问题将是“流氓”括号。因此,您需要使用一个函数来检查括号是标记结构的一部分还是页面中的某个地方

此功能将帮助您上路:

function findSquareBracketsAndHTML()
{
    //this beautiful regex matches [...] 99% of all cases, for 100% isn't viable is guess.
    $bracketElements = preg_match('/\[/?\w+((\s+\w+(\s*=\s*(?:\".*?\"|\'.*?\'|[^\'\">\s]+))?)+\s*|\s*)/?\]/', $contentField, $matches);
    //$matches contains all [] elements.    

    $doc = new DOMDocument();
    $doc->loadHTML($contentField) //you might need to wrap this in a container element.

    $xpath = new DOMXPath($doc);
    $nodes = $xpath->query('//*');

     foreach($nodes as $node) {
           //do whatever you want with html nodes here
     }

}