2

在我的 php 代码中,我运行了一堆 shell 脚本,最终输出以下内容

['October 20, 2003', '047085815X', '978-\n0470858158', '1', u'\nWireless Foresight: Scenarios of the Mobile World in 2015 [Hardcover]\n']

上面的输出保存到 $temp。

但是,当我执行 echo $temp[0] 时,它会打印第一个左括号并 echo $temp[1] 打印单引号等.....

我相信这是因为它是一个字符串而不是一个数组。

如果每个元素都用逗号分隔,我想将其转换为 n 数组。

但是,请注意 2003 年 10 月 20 日中有一个逗号,并且应该保留它自己的元素。

有人可以指出我在寻找什么功能。

4

4 回答 4

2

修剪打开和关闭 [],然后使用str_getcsv()

于 2012-10-11T09:04:44.400 回答
1

我认为这是您正在寻找的功能

str_getcsv()

快速示例

$line = "'October 20, 2003', '047085815X', '978-\n0470858158', '1', '\nWireless     Foresight: Scenarios of the Mobile World in 2015 [Hardcover]\n'";

$parsed = str_getcsv(
  $line, # Input line
  ",",   # Delimiter
  "'"   # Enclosure
);

print_r($parsed);

输出:

Array ( [0] => October 20, 2003 [1] => 047085815X [2] => 978- 0470858158 [3] => 1 [4] => Wireless Foresight: Scenarios of the Mobile World in 2015 [Hardcover] ) 
于 2012-10-11T09:04:25.973 回答
0

您的输入看起来非常像一个 js 数组,除了神秘u符号位于单引号之外,其他所有答案似乎都忽略了它。我也会。如果将单引号更改为双引号,则可以使用函数从 jsjson_decode中获取php数组。

$str = '["October 20, 2003", "047085815X", "978-\n0470858158", "1", "\nWireless Foresight: Scenarios of the Mobile World in 2015 [Hardcover]\n"]';
print_r(json_decode($str));
于 2012-10-11T09:41:13.557 回答
0

您所拥有的似乎更接近于 javascript 数组。我不知道你的 shell 脚本是如何工作的,但我知道 php 数组是如何形成的;您需要以下内容来形成一个 php 数组:

$temp = array('item1','item2','etc');

所以对你来说,我会输出以下内容,减去方括号:

$temp = array('October 20, 2003', '047085815X', '978-\n0470858158', '1', '\nWireless Foresight: Scenarios of the Mobile World in 2015 [Hardcover]\n');

然后 $temp[0] 将返回正确的信息。

于 2012-10-11T09:05:52.453 回答