这是Why doesn't update_post_meta work for certain strings? WordPress Answers问题的变体。我把它带到这里是因为我怀疑这可能是一个纯粹的PHP问题,而不仅仅是一个WordPress问题。
我的问题基于以下代码:
$upload = wp_handle_upload ( $_FILES [WPSM_MAIL_META_ATTACHMENT], array ('test_form' => false ) );
$path = 'C:\xampp\htdocs\wordpress/wp-content/uploads/2011/12/ReSharper-6.1-License.txt';
var_dump($path);
$path = $upload['file'];
var_dump($path);
die();
update_post_meta ( 34, WPSM_MAIL_META_ATTACHMENT, $path );
update_post_meta
调用会更新WordPress数据库中的WPSM_MAIL_META_ATTACHMENT
列以获取帖子号。 34.第2行中的字符串文字赋值给$path
与第4行中数组成员赋值完全相同的值,但是使用代码原样,WPSM_MAIL_META_ATTACHMENT
列更新为空字符串。如果我注释掉第4行,因此仅使用文字赋值,WPSM_MAIL_META_ATTACHMENT
列将更新为正确的文件路径值。
我只能想象分配给$path
的两个不同字符串在某种程度上与我使用我的noob调试工具var_dump
和die
不可见。我怎样才能诊断出上述两种情况之间的不同之处?或者,作为妥协,我可以做些什么来修改$path = $upload['file']
赋值,以便获得与文字赋值相同的结果?
此代码执行后,我的浏览器窗口中的输出完全如下所示,在一行上按原样再现,为了保真度:
string(78) "C:\xampp\htdocs\wordpress/wp-content/uploads/2011/12/ReSharper-6.1-License.txt" string(78) "C:\xampp\htdocs\wordpress/wp-content/uploads/2011/12/ReSharper-6.1-License.txt"
答案 0 :(得分:1)
这很难追查,需要一些源代码挖掘: -
结果应该与功能stripslahses_deep
和apply_filter
php > $path = 'C:\xampp\htdocs\wordpress/wp-content/uploads/2011/12/ReSharper-6.1-License.txt';
php > var_dump ( stripslashes_deep($path));
string(75) "C:xampphtdocswordpress/wp-content/uploads/2011/12/ReSharper-6.1-License.txt"
如果你这样做: -
php > var_dump ( stripslashes_deep( addslashes($path) ) );
string(78) "C:\xampp\htdocs\wordpress/wp-content/uploads/2011/12/ReSharper-6.1-License.txt"
我没有明确的结论,
可能是由斜杠引起的
开始快速调试,
尝试用
/wp-content/uploads/2011/12/ReSharper-6.1-License.txt
C:/xampp/htdocs/wordpress/wp-content/uploads/2011/12/ReSharper-6.1-License.txt