нужно взорвать теги к массиву на языке php

У меня есть свои теги в строке:

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

Решение

Я думаю, что лучше всего использовать str_getcsv

Пример :

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

Другие решения

Если вы не хотите идти по маршруту 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);
}
}
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>';
0
По вопросам рекламы [email protected]