Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyraz pasujący do innego
SN@JPER^
post 11.10.2008, 15:00:51
Post #1





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


Witam,

w jaki sposób zobaczyć czy dany wyraz pasuje "mniej więcej" do drugiego?

np. Manchester United jest podobne do Man Utd lub Manchester United
badź np Sunderland podobne do Sunderland FC

w jaki sposób to rozpoznać?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mike
post 11.10.2008, 15:37:28
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Może levenshtein() Ci się przyda?
Go to the top of the page
+Quote Post
SN@JPER^
post 11.10.2008, 15:50:45
Post #3





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


Jeżeli dobrze rozumiem funkcje

  1. <?php
  2. if(levenshtein("Manchester United", "Manchester Utd") == "0")
  3. {
  4.  echo 'git';
  5. }
  6.  
  7. else
  8. {
  9.  echo'nie';
  10. }
  11. ?>


To mi nie działa tak jak chciałem...

Ten post edytował SN@JPER^ 11.10.2008, 15:51:35
Go to the top of the page
+Quote Post
mike
post 11.10.2008, 17:17:27
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(SN@JPER^ @ 11.10.2008, 16:50:45 ) *
Jeżeli dobrze rozumiem funkcje (...)
Nie, nie rozumiesz. I popełniasz oczywiste błędy.
Po prierwsze funkcja levenshtein() zwraca liczbę. Ty natomiast porównujesz ją do stringa. Dlaczego?
Jeśli już w ogóle to:
  1. <?php
  2.  
  3. if(levenshtein("Manchester United", "Manchester Utd") == 0) {
  4.  
  5. // ...
  6.  
  7. ?>

Teraz. Muisz wiedzieć co zwraca ta funkcja. Zwraca ona Odległość Levenshteina. Jeśłi odległość jest równa zero to stringi są identyczne.
To kolejna przyczyna dlaczego Ci nie działa. Bo to co napisałeś nie ma sensu tongue.gif

Jeśli chcesz wiedzieć czy dwa ciągi pasują "mniej więcej" to musisz określić to "mniej więcej".
Załóżmy że odległość Levenshteina nie powinna być większa niż 4 (powinno to zależeć od długości ciągów).

  1. <?php
  2.  
  3. if(levenshtein("Manchester United", "Manchester Utd") <= 4) {
  4.    echo 'Wygląda na to, że ciągi są podobne';
  5. } else {
  6.    echo 'Może i ciągi są podone ale nie za bardzo tongue.gif';
  7. }
  8.  
  9. ?>


Możesz też skorzystać z funkcji similar_text() i założyć, że taka sama powinna być na przykład 75% znaków, wtedy ciągi są na tyle podobne ile potrzebujesz.
Go to the top of the page
+Quote Post
SN@JPER^
post 11.10.2008, 17:53:06
Post #5





Grupa: Zarejestrowani
Postów: 266
Pomógł: 0
Dołączył: 4.01.2007
Skąd: Szczecin

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


Dzięki wielkie, pomogłeś mi bardzo...
Go to the top of the page
+Quote Post
jezoo
post 13.10.2008, 16:37:24
Post #6





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 4.04.2006

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


mozna tez za pomoca preg_match
  1. <?php
  2. if(preg_match("/^Manchester United/","Manchester Utd") == 1)
  3. echo "Wyrazenia sa podobne";
  4. else
  5. echo "Wyrazenia nie sa podobne";
  6. ?>
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: 23.06.2025 - 11:32