2011-12-17 103 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 
相關問題