2011-12-17 66 views
0

这是WordPress AnswersWhy doesn't update_post_meta work for certain strings?问题的变体。我把它带到了这里,因为我怀疑这更像是一个纯粹的PHP问题,而不仅仅是一个WordPress问题。这两个PHP字符串分配有什么不同?

我的问题是根据各地的下面的代码:

$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_dumpdie不可见。我如何才能诊断上述两种情况之间的差异?或者,作为妥协,我能做些什么来修改$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

你打算在$混合斜线测试值路径变量? – scunliffe 2011-12-17 04:48:53

回答

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 
相关问题