我採取了以下輸入微調功能是給意外的值PHP
$file = 'D:/php/testapp/ta_bles.json';
$table = trim(end(explode("/", $file)), '.json');
而是讓ta_bles
因爲它給ta_ble
任何一個可以幫助我發生了什麼
但是當輸出我用下面的邏輯給出了預期的結果
$table = str_replace('.json', '', end(explode("/", $file)));
我採取了以下輸入微調功能是給意外的值PHP
$file = 'D:/php/testapp/ta_bles.json';
$table = trim(end(explode("/", $file)), '.json');
而是讓ta_bles
因爲它給ta_ble
任何一個可以幫助我發生了什麼
但是當輸出我用下面的邏輯給出了預期的結果
$table = str_replace('.json', '', end(explode("/", $file)));
它沒有按預期工作的原因是因爲e trim()
(及相關函數)的第二個參數用作字符集;所以在"json.json"
的極端示例中,您最終會得到一個空字符串,因爲它會分別修剪每個字符。
你可以這樣操作比較這樣的:
preg_replace('/^[.json]+|[.json]+$/', '', $str);
只得到"tables"
你應該使用pathinfo()
而不是試圖推出自己的:
$table = pathinfo('d:/php/testapp/tables.json', PATHINFO_FILENAME);
可以使用rtrim()
到最後刪除.json字符串。
$file = "D:/php/testapp/table.json";
$table = rtrim($file,'.json');
echo $table;
輸出:D:/php/testapp/table
然後你就可以爆炸,並得到表。
但它不是從目錄中獲取文件名的有效方法。您應該使用pathinfo()
來獲取文件名,如Jack提到的。
您是否使用''json.json''測試了這個? –
你誤解了'rtrim()'的第二個參數是如何工作的。它將傳遞的字符串作爲第二個參數,將它們拆分爲單獨的字符,刪除重複項,並搜索字符串的右端並刪除找到的所有匹配項。 **它不搜索'.json'。** –
@Jack:是的,我沒有考慮這一點。 –
看一看什麼'trim'第二個參數的實際含義。 – Gumbo
只有當我在名稱中使用下劃線時,問題纔會發生 –
編輯完成後,@Gumbo出現了問題所在(請參閱[文檔](http://www.php.net/manual/) EN/function.trim.php))。如果他不寫答案,我會盡快做。 – Sumurai8