Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]preg_replace słowa krótsze niż 3 znaki
phpowiec84
post
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 10.12.2010

Ostrzeżenie: (0%)
-----


zbudowałem preg_replace do usuwania z tekstu wyrazów krótszych niż 3 znaki

  1. $text = preg_replace('|s+w{1}s+|', ' ', $text);


ale nie działa ,dlaczego ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
redelek
post
Post #2





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


a takie coś ?

  1. preg_replace('/\b[\w]{1,3}\b/', '', $text);
Go to the top of the page
+Quote Post
phpowiec84
post
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 10.12.2010

Ostrzeżenie: (0%)
-----


usuwa 3 pierwsze znaki z wyrazu :/
Go to the top of the page
+Quote Post
redelek
post
Post #4





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


nie bo tego nie chciałeś. Chciałeś żeby z z tekstu wycinał krótsze niż 3 znaki więc wycina. Ja to tak zrozumiałem
Więc jeśli jest tekst. "Ala ma kotka a kotek ma ale" to zostanie tylko "kotka kotek"

Go to the top of the page
+Quote Post
phpowiec84
post
Post #5





Grupa: Zarejestrowani
Postów: 101
Pomógł: 2
Dołączył: 10.12.2010

Ostrzeżenie: (0%)
-----


zmierzam do tego aby z tekstu były usuwane wyrazy mające mniej niż 3 znaki ...
Go to the top of the page
+Quote Post
gargamel
post
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


  1. preg_replace('/\s.{1,2}\s/', ' ', $string)


Ten post edytował gargamel 27.05.2011, 12:31:16
Go to the top of the page
+Quote Post
bastard13
post
Post #7





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. $text = preg_replace(array('/(\W)(\w{1,2})\040/', '/^(\w{1,2})\040/', '/\040(\w{1,2})(\W)/', '/\040(\w{1,2})$/'), array('$1', ' ', '$2', ' '), $text);

, gdzie patterny wyłapują odpowiednio:
- (2) słowo na początku ciągu,
- (4) słowo na końcu ciągu,
- (1 i 3) słowa w środu
W sumie zamiast \040 (spacja) powinno być \s (wszystkie białe znaki).

@up:
gargamel - twój regex nie sprawdzi się przy słowach na początku lub końcu ciągu. I z tego co kojarzę, to polegnie też w przypadku kilku słów obok siebie np. 'aa bb cc dd ee'

Ten post edytował bastard13 27.05.2011, 12:42:34
Go to the top of the page
+Quote Post
gargamel
post
Post #8





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Przyznaje rację. Na szybciora to machnąłem.
Cytat(bastard13 @ 27.05.2011, 13:39:24 ) *
... I z tego co kojarzę, to polegnie też w przypadku kilku słów obok siebie np. 'aa bb cc dd ee' ...

Skąd to się bierze, bo szczerze mówiąc nie wiem ?

Ten post edytował gargamel 27.05.2011, 13:38:20
Go to the top of the page
+Quote Post
bmL
post
Post #9





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Kod
aa bb cc dd ee
//usuwa [ bb ]
aacc dd ee
//usuwa [ dd ]
aaccee
koncowy napis: aaccee
o_O

no chyba że się mylę (IMG:style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
gargamel
post
Post #10





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Nie usuwamy " bb " tylko zamieniamy to na pojedynczą spację.
Z aa bb cc dd ee pozostanie zatem aa cc dd ee
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 09:54