Падарваць не працуе з 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, два словы»;

Калі ласка, вы можаце дапамагчы мне дасягнуць гэтага?

4
Вызначэнне «не працуе». Што адбываецца і што менавіта вы чакаеце замест гэтага?
дададзена аўтар deceze, крыніца
Выкарыстанне str_replace() перад выбухам; або выкарыстоўваць str_getcsv ()
дададзена аўтар Mark Baker, крыніца
што чаканы вынік?
дададзена аўтар Robert, крыніца

8 адказы

If you want to remove any space and duplicate tags then you need to also add array_unique with array_filter

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

Note .. Please this would not remove the . in the result .. here is a better way to filter your results

$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
3
дададзена
Калі ласка ....
дададзена аўтар Baba, крыніца
Так, гэта самы лепшы адказ на маё пытанне. Лепшае рашэнне!. Дзякуючы.
дададзена аўтар Andrei Andrade, крыніца

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

foreach($Text_Array as $textval)
{
echo $textval . ",";
}
0
дададзена

U можа паспрабаваць гэта

<?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 )
?>
0
дададзена

Вам патрэбен такі выгляд кода

$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. Explode па
  4. Выдаліць дублікаты па array_unique()
0
дададзена

Вы можаце выдаліць усе unncessary commata ў вашым прыкладзе, замяніўшы «,» з «» пакуль не больш «,» не існуе.

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

Выкарыстоўваюцца функцыі:

0
дададзена

Паспрабуйце гэта:

<?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);
?>
0
дададзена

Што вам трэба 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);

і вы тады атрымаеце жаданы вынік.

0
дададзена

Вы можаце замяніць некалькі бесперапыннай коскай адным коскі, перш чым выбухнуць радок

$Text = "brazil,banks,home,,uk,,,,test,financial times,.,ipad,,banks,,Two words,,";

$Text = preg_replace("/,+/", ",", $Text);
$Text_Array = explode(",",$Text);

print_r($Text_Array);

Звярніце ўвагу, што вы ўсё яшчэ адзін элемент у масіве, якая змяшчае кропку, а апошні элемент масіва будзе пустым, калі ваша радок заканчваецца коскі.

0
дададзена