如何在PHP中拆分此字符串?

时间:2013-04-10 06:05:52

标签: php

我有一个看起来像这样的字符串:

'word','another word','and a sentence','and more','etc etc'

我需要把它分成两个字符串,除以第二个逗号,不应该在任何一个句子中显示。使事情变得复杂的是,这里也可以是字符串的各种引号部分内的逗号。

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

这非常像CSV语法,所以:

$parsed  = str_getcsv($string, ',', "'");
$string1 = join(',', array_slice($parsed, 0, 2));
$string2 = join(',', array_slice($parsed, 2));

如果你的PHP版本低于5.3,因此你没有str_getcsv,你可以使用php://tempfgetcsv的虚拟文件句柄来复制它。

或者,根据语法的难易程度,strtok可用于简单的解析器。找到第一个',然后是下一个',然后是,,然后是',然后是下一个',您将获得第一部分{{1}}串...

答案 1 :(得分:0)

因为你说在引号之间可以有逗号..所以preg_split可以比爆炸更好地帮助你

        <?php

                 $string = "'word','another word','and a sentence','and more','etc etc'";
                 $pattern = '%\',\'%';
                 $split = preg_split($pattern,$string);
                 $array1 = array();
                 $array2 = array();
                 foreach($split as $key=>$value)
                 {
                    $value  = trim($value,"'");
                    $value = "'{$value}'";

                    if(($key === 0) || ($key ===1))
                    {
                        $array1[] = $value;
                    }
                    else
                    {
                        $array2[] = $value; 
                    }
                 }

                echo $req_string1 = implode(',',$array1);
                echo "<br>";
                echo $req_string2 = implode(',',$array2);     


             ?>

答案 2 :(得分:0)

$a="'word','another word','and a sentence','and more','etc etc'";

//preg_match('{(.*?,[^,]*),(.*)}', $a, $matches);
preg_match('{(.*?[^\\\\]\',.*?[^\\\\]\'),(.*)}', $a, $matches); //UPDATE 
print_r($matches);

DISPLAY:

    Array
(
    [0] => 'word','another word','and a sentence','and more','etc etc'
    [1] => 'word','another word'
    [2] => 'and a sentence','and more','etc etc'
)

答案 3 :(得分:0)

引号之间的逗号

$a="'word','another word','and a sentence','and more','etc etc'";

eval("\$arr =  array($a);");

$text1='';
$text2='';
foreach($arr AS $k=>$v){
    if($k<2){
        $text1.=$text1?',':'';
        $text1.="'{$v}'";
    }else{
        $text2.=$text2?',':'';
        $text2.="'{$v}'";
    }
}
echo $text1;
echo PHP_EOL;
echo $text2;

'word','另一个字'

'和句子','和更多','等等'