次のような文字列があります。
'word','another word','and a sentence','and more','etc etc'
これを 2 つの文字列に分割し、2 番目のコンマで区切る必要がありますが、どちらの文にも表示されません。複雑なのは、文字列のさまざまな引用符部分の内部にコンマが含まれている可能性があることです。
誰でも私を助けることができますか?
次のような文字列があります。
'word','another word','and a sentence','and more','etc etc'
これを 2 つの文字列に分割し、2 番目のコンマで区切る必要がありますが、どちらの文にも表示されません。複雑なのは、文字列のさまざまな引用符部分の内部にコンマが含まれている可能性があることです。
誰でも私を助けることができますか?
これは CSV 構文に非常によく似ているため、次のようになります。
$parsed = str_getcsv($string, ',', "'");
$string1 = join(',', array_slice($parsed, 0, 2));
$string2 = join(',', array_slice($parsed, 2));
PHP のバージョンが 5.3str_getcsv
未満php://temp
でfgetcsv
.
または、構文の難しさに応じてstrtok
、単純なパーサーに使用できます。'
最初の 、次に次の'
、次に a ,
、次に a '
、次に次を見つける'
と、文字列の最初の部分が得られます...
引用符の間にコンマが入る可能性があると言っているので、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);
?>