Explode не работает с запятыми multilpe внутри строки

Я пытаюсь найти ответ здесь и в Google, но не повезло!

Почему это не работает, когда я пытаюсь взорвать строку?

$Text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,"; $Text_Array = explode(",",$Text); $Text_Array = array_filter($Text_Array); print_r($Text_Array); 

Я хотел бы, чтобы все мои теги разделились на одну запятую и удалили пробел и дублировали теги.

Я бы хотел получить этот результат:

«Бразилия, банки, дома, Великобритания, тест, финансовые времена, ipad, два слова»;

Пожалуйста, вы можете помочь мне достичь этого?

Если вы хотите remove any space and duplicate tags вам также нужно добавить array_unique с array_filter

 $textAray = array_unique(array_filter($textAray)); 

Примечание .. Пожалуйста, это не удалит . в результате .. вот лучший способ отфильтровать результаты

 $text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,"; $textArray = array_unique(preg_split("/[,.]+/", $text)); $textArray = array_filter($textArray); echo implode(",", $textArray); 

Вывод

 brazil,banks,home,uk,test,financial times,ipad,Two words 

Вам нужна функция array_unique:

 $Text_Array = array_unique($Text_Array); 

Таким образом, ваш код становится:

 $Text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,"; $Text_Array = explode(",",$Text); $Text_Array = array_filter($Text_Array); $Text_Array = array_unique($Text_Array);\ print_r($Text_Array); 

и вы получите желаемый результат.

Вы можете заменить несколько непрерывных запятых на одну запятую, прежде чем взорвать строку

 $Text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,"; $Text = preg_replace("/,+/", ",", $Text); $Text_Array = explode(",",$Text); print_r($Text_Array); 

Обратите внимание, что в вашем массиве будет оставаться один элемент, содержащий точку, и последний элемент массива будет пустым, если ваша строка заканчивается запятой.

Вам нужен такой код

 $Text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,"; $str = substr(preg_replace('/(.+?)[,]+/', '$1,', $Text),0,strlen($str)-1); $arr = array_unique(explode(',', $str)); print_r($arr); 
  1. Вам нужно заменить, или больше одним, я сделал это с preg_replace
  2. Удалить последний, из строки
  3. Взорвать,
  4. Удалить дубликаты с помощью array_unique ()

вы можете попробовать это

 <?php $Text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,"; $Text=str_replace(array(",,",",,,,",",.,",",,"),',',$Text); $Text_Array = explode(",",$Text); $Text_Array = array_filter($Text_Array); print_r($Text_Array); //output :: Array ( [0] => brazil [1] => banks [2] => home [3] => uk [4] => test [5] => financial times [6] => ipad [7] => banks [8] => Two words ) ?> 

Попробуй это:

 <?php $Text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,"; $Text = str_replace('.','',implode(',',array_unique(explode(',', $Text)))); $Text_Array = explode(",",$Text); $Text_Array = array_filter($Text_Array); print_r($Text_Array); ?> 

Вы можете удалить все ненужные запятые в вашем примере, заменив «,,» на «,», пока не появится «,,».

 while ( strstr($Text,',,') !== false ) { $Text = str_replace($Text,',,',','); } 

Используемые функции:

  • strstr
  • str_replace

В дополнение к решению, предоставленному этими людьми, вы можете попробовать это, чтобы распечатать значения так, как вам хотелось:

 foreach($Text_Array as $textval) { echo $textval . ","; }