需要用php语言将标签分解为数组


need to explode tags to array in php language

我的标签在第行:

word1 word2 word3 "word4 word1" word4 "word7 word4" "word67 word56 word1" word7

需要获得数组中的所有内容,如:

word1
word2
word3
word4 word1
word4
word7 word4
word67 word56 word1
word7

需要使用爆炸(",$input)和爆炸("''",$input)组合或其他方法来完成,但我不知道如何操作。

我认为最好的方法是使用str_getcsv

示例:

var_dump( str_getcsv('word1 word2 word3 "word4 word1" word4 "word7 word4" "word67 word56 word1" word7', ' ', '"'));

如果你不想走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);
    }
}

我建议您使用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>';