WordPress解决post_content换行符、双引号等特殊字符,存入数据库丢失反斜杠的问题
2023-01-29
WordPress二次开发中,遇到一个克隆文章的业务,原理倒是很简单,读取原文信息,包括标题、简介、内容和分类等,然后新建一篇文章,依次插入原文的各项数据。
问题出在post_content字段上,数据库存储的内容是换行符:\n,读取出来是:\\n,再此存入数据库后,变成了:n。
很明显,是丢失了反斜杠,无疑会导致内容显示错乱。
解决方法是addslashes()函数补充反斜杠,WordPress内核中封装了此函数,名为wp_slash,如此,更新或者插入新文章时,正确用法为:
wp_update_post( wp_slash( (array) $post ), true, false );
wp_insert_post( wp_slash( (array) $post ), true, false );
附上wp_slash源码:
function wp_slash( $value ) {
if ( is_array( $value ) ) {
$value = array_map( 'wp_slash', $value );
}
if ( is_string( $value ) ) {
return addslashes( $value );
}
return $value;
}
addslashes() 函数返回在预定义的字符前添加反斜杠的字符串。
- 单引号(’)
- 双引号(”)
- 反斜杠(\)
- NULL
(版权归cpury.com所有,转载请注明出处。)