Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak usunąc przez PHP spacie w danym zdaniu?
Forum PHP.pl > Forum > PHP
RenePL
Witam mam zdanie a wyrazy są odczielone od siebie o różnych roztawach odzielone są spaciom Nie umiem tego w tym poscie zastosować ale zamiast kropek jest normalna przerwa jak w spaci np.

VAR1................VAR2...................................VAR3........VAR4

Jak w php usunąc te przerwny miedzy VAR
zeby uzyskac
VAR1VAR2VAR3VAR4 lub lepiej VAR1 VAR 2 VAR3 VAR 4 czy też dobrze było by

VAR1.VAR2.VAR3.VAR4


prosze o pomoc
sobstel
postaraj się jaśniej formułować problem. może ta funkcja pomoże str_replace" title="Zobacz w manualu PHP" target="_manual ?
RenePL
No jasne że to dzieki ci bardzo!
crash
A ja pokochalem wyrazenia regularne wiec zaproponuje:
  1. <?php
  2. $tekst = ereg_replace('[[:space:]]+', ' ', $tekst);
  3.  
  4. ?>
sobstel
Cytat(crashu @ 2004-12-21 21:21:54)
A ja pokochalem wyrazenia regularne wiec zaproponuje:
  1. <?php
  2. $tekst = ereg_replace('[[:space:]]+', ' ', $tekst);
  3. ?>

moim skromnym zdaniem wyrażenia regularne powinny być wykorzystywane tylko do rzeczy, których nie da się zrobić za pomocą string functions... a to z jednej prozaicznej przyczyny, wyr.reg. są po prostu wolniejsze.
crash
Wolniejsze o ile tysiecznych czy dziesieciotysiecznych sekundy? snitch.gif
A tak btw. to jak by to zrobic zwyklym str_replace() ?
sobstel
Cytat(crashu @ 2004-12-21 21:49:42)
A tak btw. to jak by to zrobic zwyklym str_replace() ?

zabierasz sie wyrazenia regularne a nie wiesz jak dziala jedna z podstawowych string functions? polecam manuala (str_replace" title="Zobacz w manualu PHP" target="_manual). to naprawde swietna lektura. piszą tam tez cos o ereg_replace vs. str_replace.
crash
Nie nie nie, nie chodzi o rozumienie dzialania winksmiley.jpg Ale jak uzywajac tylko str_replace zamienisz duza ilosc spacji w ciagu na jedna?
sobstel
Cytat(crashu @ 2004-12-21 22:05:15)
Nie nie nie, nie chodzi o rozumienie dzialania winksmiley.jpg Ale jak uzywajac tylko str_replace zamienisz duza ilosc spacji w ciagu na jedna?

wlasnie, ze chodzi o rozumienie jej dzialania. gdybys rozumial to by nie bylo tego pytania. 2 razy polecałem manuala, to teraz już żywcem wkleje pierwsze zdanie z opsiu str_replace "Replace all occurrences of the search string with the replacement string"
crash
Przestan cytowac swiety manual i sprawdz sam. Co zamienisz? Spacje spacją?
sobstel
Cytat(crashu @ 2004-12-21 22:55:21)
Przestan cytowac swiety manual i sprawdz sam. Co zamienisz? Spacje spacją?

1. zapytaj kolegi, ktory o to pytal i znalazl rozwiazanie swojego problemu.

2. zamienam spacje niczym.
crash
Ad. 1 Niewiadomo czy koledze udalo sie rozwiazac ten "problem", po prostu ucieszyl sie, ze jest funkcja robiaca 'replace'...

Ad. 2 Kasujac po prostu spacje nie rozwiazujesz tego trudnego zadania... Usuniecie spacji to to gorsze rozwiazanie, kolega wolalby jednak zamienic wiele spacji na jedna.
sobstel
Cytat(crashu @ 2004-12-21 23:08:14)
Kasujac po prostu spacje nie rozwiazujesz tego trudnego zadania... Usuniecie spacji to to gorsze rozwiazanie, kolega wolalby jednak zamienic wiele spacji na jedna.

rzucilem okiem na poczatek. no rzeczywiscie kolega najbardizej to by wolał zamienić na kropki (myślałem caly czas ze mowimy o tym pierwszym przypadku, Var1Var2Var3) i wtedy ereg_replace jest w sam raz.
RenePL
Chciałem aby zamiast { kropi to spacia} [..........] wstawil jeden element nie da się! za każdym razem jest zawsze tyle samo! jest jakis count w str_ co zamiast 10 spaci wstawi 1 spacie??
DeyV
Ale przecież tu już się pojawiła odpowiadź - wyrażenia regularne...
  1. <?php
  2. $tekst=' ale dziwny teskt s t';
  3. $tekst = preg_replace(&#092;"/s+/\", ' ', $tekst);
  4. echo $tekst;
  5. ?>
RenePL
[SQL]SUPER!! DZIAŁA DZIEKI!
rogrog
można to zrobić też za pomocą str_replace ale wątpię czy to by było optymalne rozwiązanie

  1. <?php
  2.  
  3. $str = 'VAR1 VAR2 VAR3 VAR4  VAR5 VAR6 VAR7';
  4.  
  5. while ( false !== strpos( $str, ' ' ) ){
  6. $str = str_replace( ' ', ' ', $str );
  7. }
  8.  
  9.  
  10. echo $str;
  11.  
  12. ?>


działanie proste - dopóki występują jakieś podwójne spacje, każdą podwójną spację zamień na pojedynczą
crash
Ten temat sie ciagnie jakby takie zformatowanie ciagu bylo jakims niezwykle trudnym wyzwaniem. Odpowiedzi dobre byly juz pare razy podane wiec po co ciagnac ten temat...

rogrog: czytaj caly temat zanim cos piszesz, a nie tylko samo pytanie...
rogrog
@crashu: dla Twojej informacji dokładnie przeczytałem cały temat. I podałem ten krótki kod bo, mimo że rozwiązanie zostało już podane to były wątpliwości czy można to wykonać bez użycia wyrażeń regularnych, a za pomocą samego str_replace

Cytat(crashu)
A tak btw. to jak by to zrobic zwyklym str_replace() ?

Cytat(crashu)
Ale jak uzywajac tylko str_replace zamienisz duza ilosc spacji w ciagu na jedna?


w dwóch postach pytasz się jak to zrobić z pomocą str_replace - no więc nie wiem co Ci się nie podoba.
crash
No to ja juz nie wiem czy uzycie jednego malutkiego ereg_replace bedzie gorsze od, tak jak ty proponujesz, petli while, strpos i str_replace...
sf
Cytat(crashu @ 2004-12-22 18:19:09)
No to ja juz nie wiem czy uzycie jednego malutkiego ereg_replace bedzie gorsze od, tak jak ty proponujesz, petli while, strpos i str_replace...

Rogrog pokazał, że da się to zrobić za pmocą str_replace i tyle. Ten post jest taki długi m.in. z powodu Twoich wypowiedzi... więc pretensje miej do siebie skoro przeszkadza Ci długość posta, a nie do innych.
sobstel
Cytat(sf @ 2004-12-22 20:01:10)
Rogrog pokazał, że da się to zrobić za pmocą str_replace i tyle.

sęk w tym ze nie jest to sposób skuteczny. jak udalo nam sie dojsc w dosc zywiolowej dyskusji str_replace mozna uzyc do zastapienia wszystkich spacji, ale zeby osiagnac efekt zastapienia wielu spacji pod rzad jedną spacją ereg_replace jest skuteczniejsze. metoda pokazana przez rogroga sypie się gdy liczba spacji jest parzysta, więc trudno na niej polegać.

podtrzymuje to co powiedziałem na początku. wyrażeń regularnych powinno się używac tylko wtedy gdy string functions zawodzą. jak uświadomił mi crashu w tym przypadku właśnie tak jest.
DavidPL
Cytat(sopel @ 2004-12-23 10:37:18)
metoda pokazana przez rogroga sypie się gdy liczba spacji jest parzysta, więc trudno na niej polegać.

A możesz pokazać w którym miejscu, bo ja nie mogę zauważyć błędów logicznych?
DeyV
1. metoda z while NIE sypie się, niezależnie od tego, ile jest spacji
2. ereg_replace jest skuteczne
3. preg_replace jest wydajniejsze

Koniec tematu.
Zachęcam tylko, by traktować innych z większym szacunkiem, pamiętając o tezie zawartej w mojej sygnaturce.

lock
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.