Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
全局正则表达式搜索和替换以修复XML导出文件中的HTML?_Html_Xml_Regex_Text_Grep - Fatal编程技术网

全局正则表达式搜索和替换以修复XML导出文件中的HTML?

全局正则表达式搜索和替换以修复XML导出文件中的HTML?,html,xml,regex,text,grep,Html,Xml,Regex,Text,Grep,我有一个相当大的WordPress.XML导出文件,我将从一个博客迁移到Drupal。导出文件的一个突出问题是,它缺少任何段落分隔符的标记。但是,标签在实际站点上存在 从XML文件中的原始文本中可以看到,段落之间有多个换行符,其中应该有一个标记。我希望在全局范围内添加一个标记,其中有一个换行符和一个使用RegEx的大写字母,但我不知道如何工作。导出文件中包含相关文本的示例XML标记为: <content:encoded><![CDATA[Lorem ipsum dolor si

我有一个相当大的WordPress.XML导出文件,我将从一个博客迁移到Drupal。导出文件的一个突出问题是,它缺少任何段落分隔符的
标记。但是,标签在实际站点上存在

从XML文件中的原始文本中可以看到,段落之间有多个换行符,其中应该有一个
标记。我希望在全局范围内添加一个
标记,其中有一个换行符和一个使用RegEx的大写字母,但我不知道如何工作。导出文件中包含相关文本的示例XML标记为:

<content:encoded><![CDATA[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur gravida risus at sem interdum iaculis. Curabitur eget est tellus, quis viverra arcu. 


Cras posuere turpis imperdiet odio aliquet sollicitudin. Maecenas et neque eget quam fringilla tempor. Vivamus sodales vulputate consectetur. 


Sed ullamcorper elementum est, at dapibus orci fermentum vitae. Vivamus nisi turpis, pretium sed tincidunt et, dapibus at eros. Quisque neque magna, posuere eget eleifend ut.


从上面可以看出,应该是段落之间有多个换行符。我在考虑正则表达式的换行符/大写字母组合,以便只放入一个
标记,并且专门针对
XML标记,这样我就不会在XML文件的其他地方添加标记。另一个使事情变得更复杂的问题是,一些段落已经有了
标记,编辑器在其中添加了一个自定义类,如

这个问题以前在StackOverflow上讨论过。问题是,Wordpress不在其数据库中存储p标记(如果您使用其WYSIWYG编辑器),这些标记是在通过wpautop()函数呈现时创建的(而不是中断)。因此,我编辑了export.php文件(运行WP 3.4.1)并在其中添加了函数。您可以(更改在第375行和第376行)



您可以将整个代码复制并粘贴到文件[root]/wp admin/icludes/export.php中,然后再次运行导出。别忘了在备份文件之前-我不保证它能在其他版本中工作,但您可以了解如何编辑导出。

您如何将其导入Drupal?根据格式,Drupal可以将换行符视为段落,这意味着不需要进一步的标记(例如,
过滤HTML
)。我会对它进行一次试运行——如果您真的需要对它进行标记,那么XML解析器/生成器是一种更好的方法……我正在使用WordPress迁移模块,但似乎对此没有任何规定。我已经对它进行了试运行,实际上没有在drupal中创建p标记,而XML文件中没有。如果存在,则导入标记。我有一种感觉,这将是不容易的解决办法,但我想我会尝试。
<content:encoded><?php echo wxr_cdata( apply_filters( 'the_content_export', wpautop( $post->post_content ) ) ); ?></content:encoded>
<excerpt:encoded><?php echo wxr_cdata( apply_filters( 'the_excerpt_export', wpautop( $post->post_excerpt ) ) ); ?></excerpt:encoded>