首先,我已经浏览了这个链接http://codex.wordpress.org/Integrating_WordPress_with_Your_Website。我不能用这个。
我正在尝试从我拥有的远程服务器上的WordPress安装中获取最新帖子。他们共享同一个数据库服务器,这就是我现在正在发帖的地方,然后将它恢复到我的PHP应用程序中。一切正常。
什么不起作用是显示器。在我使用nl2br
创建新行之前,这样做不正常。
我注意到WordPress会进行一些后期处理,以便将p
标记添加到他们认为应该是段落的某些行(例如,不在ul
或li
中。他们在从DB抓取帖子后执行此操作(p
标记未保存到DB)。
我试图找出他们在源代码中使用了什么后处理,但是在找到the_content
函数等之后我发现空白了$post
var来自哪里但没找到我正在寻找的代码。
WordPress使用什么后处理功能来添加这些段落以使其帖子看起来不错?
对于正则表达式或普通PHP用户,我希望改变以下内容:
<em><a href="link">awesome link</a></em>
<h3>Awesome Head</h3>
lalalaalal
<ul>
<li>Awesome li</li>
</ul>
类似于:
<p>
<em><a href="link">awesome link</a></em>
</p>
<h3>Awesome Head</h3>
<p>lalalaalal</p>
<ul>
<li>Awesome li</li>
</ul>
标记明显不应包含p
标记的标记,如h
和ul
以及li
标记。
答案 0 :(得分:2)
最简单,最快捷的方式:解析RSS源中的最新帖子。您会发现自动为您添加的所有<p>
代码。
答案 1 :(得分:0)
正确的做法是@BryanH说:使用已经预先格式化的帖子的RSS提要。
但是,如果您不想制作XML解析器并处理其附带的所有内容,只是为了获得博客文章,那么您可以使用以下内容:
$content = preg_split('/\\r?\\n/', str_replace(']]>', ']]>', $post->content));
foreach($content as $line){
if(strlen(trim($line)) > 0){
$line = trim($line);
if(!preg_match('/^(<|<\/)(ul|li|div|h[1-6])/', $line)){
echo '<p>'.$line.'</p>';
}else{
echo $line;
}
}
}
这是我个人最终用来解决这个问题的代码。
可能有一种更强大和更优雅的方式(快速编码)但是我在一个非常复杂的博客文章中测试了这个图片和许多不同的标签,它似乎很好地工作,没有任何错误。
我仍然不确定WP使用什么,但这最终解决了我的问题。