我有我的标签:
word1 word2 word3 "word4 word1" word4 "word7 word4" "word67 word56 word1" word7
需要将所有内容都放在数组中:
word1
word2
word3
word4 word1
word4
word7 word4
word67 word56 word1
word7
需要使用explode(“”,$ input)和explode(“\”“,$ input)组合或其他东西,但我不知道如何...
答案 0 :(得分:3)
我认为最好的方法是使用str_getcsv
示例:
var_dump( str_getcsv('word1 word2 word3 "word4 word1" word4 "word7 word4" "word67 word56 word1" word7', ' ', '"'));
答案 1 :(得分:0)
我建议您使用preg_match_all()
。你的一个例子
$str = 'word1 word2 word3 "word4 word1" word4 "word7 word4" "word67 word56 word1" word7';
preg_match_all('/(word\d)|("([^"]*)")/', $str, $m);
print '<pre>';
print_r($m[0]);
print '</pre>';
答案 2 :(得分:0)
如果你不想沿着preg_split路线走下去,你可能会爆炸(“\”“,$ input),然后通过那个输出,并且数组项没有尾随”,按空间划分。它有尾随“,删除它。
这不是一个优雅的解决方案,但可行。
$round1 = explode(" \"", $input); // split based on the " at the start
$round2 = array();
foreach ($round1 as $word) {
if (substr($word,-1) == "\"") {
$round2[] = str_replace("\"","",$word); // get rid of the trailing "
}
else {
// need to merge our existing array with the exploded array
$round2 = array_merge($round2, explode(" ", $word);
}
}