Witam, mam problem z wyrażeniem regularnym, które by usuwało wielokrotność spacji. Zapewne będzie to preg_replace, lecz jak to napisać? Czytałem wiele poradników, kursów, lecz nie mogę zrozumieć. Mógłby ktoś pomóc?
Spróbuj tego. Ja przetestować nie mogę, bo nie mam php zainstalowanego (i mi się w sumie teraz nie chce instalować :D)
<?php
$str = 'foo o';
$str = preg_replace('/\s\s+/', '', $str);
echo $str;
?>
W twoim przykładzie działa, lecz jest ale… Nie akceptuje liczb. Jeżeli się pojawią kasuje wszystkie spacje pomiędzy nimi.
No to musisz dokładnie sprecyzować, co ma robić to wyrażenie regularne. Bo z początkowego opis wynika, że jedynie usuwać wszystkie spacje w stringu. Możesz zarzucić jakimś przykładowym stringiem to się temu przyjrzę.
Jako $str podaje
1 2 3
Zwraca:
123
a powinno
1 2 3
Mogę
Terrorists *|vVv|*IvO.ory 1 1 0 0 50 6 185 99 0 10
Terrorists MrK 1 1 0 0 50 6 246 127 0 0
Terrorists Grzesie.k 0 0 0 0 0 5 0 0 0 0
Terrorists FoV//Mato 0 0 0 0 0 5 0 0 0 0
Terrorists Novice 1 1 0 0 50 4 114 161 0 0
Terrorists elmo. 0 1 0 0 0 4 0 117 0 -1
Terrorists =]X-BlooD[=G.I- 0 1 0 0 0 4 28 196 0 -1
Terrorists Totals 3 5 0 0 37 5 573 700 0 8
Specops wazzup?! 1 0 0 1 100 6 85 0 11 8
Specops gonzoISauBaer 1 0 0 0 100 6 141 0 0 1
Specops Henry 1 0 0 0 100 5 30 0 25 1
Specops gonzo|Korni 1 1 0 0 50 5 216 114 0 0
Specops Plante verte 0 0 0 0 0 4 0 0 0 0
Specops gonzo|Sh1Fty. 1 1 0 0 50 4 186 213 0 0
Specops Ryan 0 1 0 0 0 4 42 246 0 -1
Specops Totals 5 3 0 1 62 4 700 573 36 9
Chciałem to przekształcić na csv., ale na początku zlikwidować wielokrotność spacji.
<?php
$str = '1 2 3';
$str = preg_replace('/\s\s+/', ' ', $str);
echo $str;
?>
Niestety nadal jest źle… Zwraca:
Terrorists *|vVv|*IvO.ory110050618599010
Terrorists MrK110050624612700
Terrorists Grzesie.k0000050000
Terrorists FoV//Mato0000050000
Terrorists Novice110050411416100
Terrorists elmo.01000401170-1
Terrorists =]X-BlooD[=G.I-010004281960-1
Terrorists Totals350037557370008Specops wazzup?!1001 1006850118
Specops gonzoISauBaer1000 1006141001
Specops Henry1000 1005300251
Specops gonzo|Korni110050521611400
Specops Plante verte0000040000
Specops gonzo|Sh1Fty.110050418621300
Specops Ryan010004422460-1
Specops Totals5301624700573369
$str = str_replace(' ', ' ', $str);
niestety nie To byłoby za proste. Ilość spacji jest zmienna, więc sposób nie działa prawidłowo. Musiał bym go wprowadzić w pętlę- ale to trwa. Wyrażenie regularne byłoby idealne.
, czy ty wiesz w ogóle co to robi czy od razu strzelasz? Najlepiej zajrzyj do manuala i zacznij sam cośrobić, bo każde z podanych tu rozwiązań działa.
Robiłem długo! A żadne z podanych tu rozwiązań nie działa tak jak powinno!
$str = preg_replace('/[\t]+/', ' ', $str);
DZIAŁA! Dzięki wielki!
lajt, no żeby zrobić z tego csv-a teraz to wystarczy spacje na ; zamienić i gotowe. Chyba, że “Terrorists FoV//Mato” ma być jedną kolumną?
Teraz już sobie poradzę
$string = ereg_replace(’ +’,’ ',$string)
ereg_replace() ma status deprecated. Wielokrotność spacji można usunąć także w ten sposób:
$string = preg_replace('/[]+/', ' ', $string);