Trim函数提供了意外的值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)));
解决方案
它不能按预期工作的原因是,trim()
(以及相关函数)的第二个参数被用作字符集;因此,在"json.json"
的极端示例中,您将得到一个空字符串,因为它分别裁剪每个字符。
您可以将这样的操作与以下操作进行比较:
preg_replace('/^[.json]+|[.json]+$/', '', $str);
若要只获取"tables"
,您应该使用pathinfo()
,而不是尝试滚动您自己的:
$table = pathinfo('d:/php/testapp/tables.json', PATHINFO_FILENAME);
相关文章