将字符串传递给数组PHP

时间:2015-06-28 09:59:19

标签: php arrays

我有这样的字符串列表:

  

'金字塔'' htc_europe'' htc_pyramid''金字塔''金字塔'&# 39; HTC',' 1.11.401.110   CL68035   释放密钥'' htc_europe /金字塔/金字塔:4.0.3 / IML74K / 68035.110:用户/释放密钥'

它看起来像数组的元素, 但是当我使用

<?php
    $string = "'PYRAMID','htc_europe','htc_pyramid','pyramid','pyramid','HTC','1.11.401.110 CL68035 release-keys','htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'";
    $arr = array($string);
    print_r($arr);

 ?>

它无法正常工作:

  

数组([0] =&gt;   &#39;金字塔&#39;&#39; htc_europe&#39;&#39; htc_pyramid&#39;&#39;金字塔&#39;&#39;金字塔&#39;&#39; HTC& #39;,&#39; 1.11.401.110   CL68035   释放密钥&#39;&#39; htc_europe /金字塔/金字塔:4.0.3 / IML74K / 68035.110:用户/释放密钥&#39)

而不是:

  

数组([0] =&gt; PYRAMID,[1] =&gt; htc_europe,[2] =&gt; htc_pyramid,   ...

我不想使用explode()因为我的字符串已经是数组格式而且许多字符串都包含&#39; &#39;字符。 请帮助我,谢谢。

4 个答案:

答案 0 :(得分:5)

您的字符串不是数组格式。从它的外观和基于你的评论的方式,我会说你有逗号分隔值,CSV。因此,解析这种方法的最佳方法是使用专门为该格式制作的函数,如str_getcsv()

$str = "'PYRAMID','htc_europe','htc_pyramid','pyramid','pyramid','HTC','1.11.401.110 CL68035 release-keys','htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'";

// this will get you the result you are looking for
$arr = str_getcsv($str, ',', "'");

var_dump($arr);

使用第二个和第三个参数可确保在字符串包含逗号时也能正确解析。

答案 1 :(得分:0)

$string仍然是string,因此如果您想从中制作数组,则会将其展开。

如果您的问题是strings have the ',' character,请使用其他分隔符,可能是|

   $string = "'PYRAMID'|'htc_europe'|'htc_pyramid'|'pyramid'|'pyramid'|'HTC'|'1.11.401.110 CL68035 release-keys'|'htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'";
    $arr = explode('|',$string);
    print_r($arr);

答案 2 :(得分:-1)

<?php
$int = preg_match_all(
    "/'(.+?)'/",
    "'PYRAMID','htc_europe','htc_pyramid','pyramid','pyramid','HTC','1.11.401.110 CL68035 release-keys','htc_europe/pyramid/pyramid:4.0.3/IML74K/68035.110:user/release-keys'",
    $matches);
print_r($matches[1]);

您可以在此处http://micmap.org/php-by-example/en/function/preg_match_all

进行测试

答案 3 :(得分:-1)

由于问题中的修改,我的答案现已过时。我将其留在这里,因为它包含一些解释为什么在特定情况下爆炸将是一个有效的解决方案。

正如您可以在线阅读php的手册,有一个非常精确的语法可以在创建数组时使用,这是参考:

http://php.net/manual/en/function.array.php

正如您所看到的,使用array()创建新数组的正确方法是通过声明每对索引=&gt;来声明由逗号分隔的每个值。用逗号分隔的值。

有没有办法 - 将一个字符串传递给该方法(我在javascript或java中看到的东西可能是json,但这是Off Topic)只是因为它不会解析它,该方法将采用整个字符串 as ,当然把它放在一个索引中(在你的情况下将是索引零)。

我告诉你当然要先使用explode()或split()或解析你的字符串,之前我告诉你的是我发言的原因。

您可能希望在阵列内的字符串中使用每个单一型号的手机,因此您必须先删除单引号:

$stringReplaced = str_replace("'", "", $yourString);

然后你必须使用以下方法将字符串拆分成数组:

$array = explode(',',$yourString);

我希望你能考虑到这一点

当然,正如我的同事所说,你可以将这个字符串视为逗号分隔值并使用str_getcsv。

〜虽然您需要删除单引号以获得纯字符串.~ (最后一条语句错误,因为您可以使用str_getcsv提供的enclosure char param)