Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Usuwanie słów mniejszych niż 3 litery
Watt
post 18.05.2009, 11:03:31
Post #1





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

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


Witam,

Mam plugin z tagami (wygląd tego w mysql to np. plugin, o, tagach, i). Jak usunąć slowa, które mają mniej niż 3 litery (czyli wygląda zmieniłby się na: plugin, tagach ). Wiem, że do tego można użyć funkcji preg_replace, ale nie wiem jak w niej zdefiniowac dłogść znaków. Bardzo prosze o pomoc.

Pozdrawiam
Go to the top of the page
+Quote Post
slawny
post 18.05.2009, 11:12:01
Post #2





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


Weź to napisz po polskiemu
Go to the top of the page
+Quote Post
kamil4u
post 18.05.2009, 11:20:26
Post #3





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
do tego można użyć funkcji preg_replace

Nie wiem czy to najwydajniejsze rozwiązanie, ale to będzie coś w stylu(nie wiem czy dokładnie bo dawno się w to nie bawiłem):
  1. <?php preg_replace("#[^s]{,3}#", '', $zmienna); ?>


Kod
#[^\s]{,3}#
:
[^\s] <-- dowolny znak bez białych(np. spacji )
{,3} <-- do 3 znaków


--------------------
Go to the top of the page
+Quote Post
Watt
post 18.05.2009, 13:04:23
Post #4





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

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


Po prostu chodzi mi o usunięcie słów które mają mniej niż trzy litery (np. i, a, o, po, za, ok). Oraz usunięciu przecinków koło nich. tagi w bazie są oddzielone jedną spacja i jednym przecinkiem (np. lubie, jeść, morele, i, inne, owoce). Funkcja powyżej nie usuwa mi tych przecinków za bardzo ;/ . Wiem, że już wyczerpuje limit pomocy na dziś, ale staram się jak najwcześniej skończyć skrypt (drugi w moim życiu tongue.gif).

Pozdrawiam
Go to the top of the page
+Quote Post
slawny
post 18.05.2009, 13:07:07
Post #5





Grupa: Zarejestrowani
Postów: 214
Pomógł: 26
Dołączył: 7.11.2007
Skąd: Warszawa

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


A gdzie one siedzą? Jakaś struktura bazy czy coś...
Oddzielone spacją i przecinkiem - chyba nie chcesz mi powiedzieć ze masz w jednym wierszu zapisane?
Go to the top of the page
+Quote Post
kamil4u
post 18.05.2009, 13:15:22
Post #6





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


  1. <?php preg_replace("#[, ]?[^s]{,3}#", '', $zmienna); ?>


--------------------
Go to the top of the page
+Quote Post
Watt
post 18.05.2009, 13:19:19
Post #7





Grupa: Zarejestrowani
Postów: 372
Pomógł: 1
Dołączył: 13.06.2008

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


A wybaczcie, każdy temat ma swoje taki w osobnym wierszu w bazie mysql.
Kod
TEMAT                    TAG
Lubie śliwki              Lubie, sliwki


@Kamil4u, dałem plusa, ale kod dalej nie działa.

Ten post edytował Watt 18.05.2009, 13:22:36
Go to the top of the page
+Quote Post
kamil4u
post 18.05.2009, 13:52:14
Post #8





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Cytat
@Kamil4u, dałem plusa, ale kod dalej nie działa.

Co znaczy nie działa? Spróbuj to:
Kod
<?php preg_replace("#[, ]*[^\s]{,3}#", '', $zmienna); ?>


--------------------
Go to the top of the page
+Quote Post
kefirek
post 18.05.2009, 16:15:10
Post #9





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Przcierz to można odrazu w zapytaniu zrobić

  1. DELETE FROM tabela WHERE CHARACTER_LENGTH(tag) < 3

Albo użyc mozna w zapytaniu REGEXP

Ten post edytował kefirek 18.05.2009, 16:16:57
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 20:49