首先,您需要删除wp_autop
滤器还有一个答案可以很好地解决这个问题:Is there an uw-wp_autop function?
出于我们的目的,我将稍微修改一下函数(基于您给出的标记示例):
function reverse_wpautop( $s ) {
// Strip newlines
$s = str_replace( "\\n", "", $s );
// Strip all <p> tags
$s = str_replace( "<p>", "", $s );
// Replace </p> with a known delimiter
$s = str_replace( "</p>", "::|::", $s );
return $s;
}
如果一切正常,则应将标记转换为:
<p>2012-12-12</p>
<p>2012-6-23</p>
<p>2012-7-3</p>
收件人:
2012-12-12::|::2012-6-23::|::2012-7-3::|::
如果现在进行拆分,则最终会在数组中得到一个额外的空元素。因此,切记在拆分之前取一个子字符串:
function split_delimited_string( $s ) {
// Take a substring, removing the final 5 characters (::|::)
$s = substr( $s, 0, -5 );
return explode( "::|::", $s );
}