Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak sprawdzić częściową zgodność...
Forum PHP.pl > Forum > Przedszkole
PYJTER
Mam takie pytanie jak sprawdzić częściową zgodność żeby wyrzucało mi wyniki zgdone częsciowe np. mam wyraz Architekt, Architekci, Biuro Architektoniczne.

teraz żeby to sprawdzić to muszę zrobić 3 sprawdzenia:

  1. if ($tablica[$i][24] == 'Architekt' || $tablica[$i][24] == 'Architekci' || $tablica[$i][24] == 'Biuro Architektoniczne')


czy można to zrobić jakoś tak żeby można było raz zdefiniować np. coś takiego Architek* i wtedy bierze mi pod uwagę wszystkie 3 opcje bo są zgodne...

Dziękuje pozdrawiam...
PrinceOfPersia
wyrażenia regularne.
matiit
  1. $haystack = array('Słowo1', 'Słowo2', 'Słowo3');
  2.  
  3. if ( in_array($tablica[$i][24], $haystack)) {
  4. //
  5. }

Może coś takiego? O ile chodzi o całkiem różne słowa.

Jeśli o wspólny człon, to odpowiedź wyżej to dobre rozwiązanie.
Pyton_000
możesz też stripos
PYJTER
Oki ale coś chyba nie ogarniam z tym wyrażeniem regularnym wink.gif:
  1. if ($tablica[$i][24] == (preg_match_all('#Architek.*#si', $tablica[$i][24])));
kujol
  1. if ( $tablica [ $i ][ 24 ] ==
  2. ( '#^Architek#si' , $tablica
  3. [ $i ][ 24 ]))) ;


Powinno działać. Wyrażenie będzie pasować do wszystkiego co zaczyna się na "Architek"
PYJTER
Kurde cosik mi to nie działa... albo inaczej działa ae nie tak jak chcę wink.gif Mianowicie jesli w kolumnie 24 bedzie Architek* to ma mi zwrócić PROJEKTANT i wartosc z kolumny 23 jesli będzie w kolumnie 24 Developer ma mi zwrócić Inwestor i wartosc z kolumny 23. a wsedzie teraz mi zwraca Projektant mimo iż w kilku przypadkach powinien zwrócić Inwestor... Wycinek działającego kodu:
  1. <?php
  2.  
  3. $tablica = array (
  4. array('97','Silesia Business Park','śląskie','40-101','Katowice','ul. Chorzowska','niemieszkaniowy','budynki biurowe','II kwartał 2013','IV kwartał 2014','','Stan zamknięty','46000','','2300000','4','12','2','','żelbetowa','100 mln - 500 mln','2014-01-24','2014-04-29','Skanska Property Poland Sp. z o.o., 00-854 Warszawa, Al. Jana Pawła II 19, tel: (22) 653 84 00 , fax: (22) 653 84 01, offices@skanska.pl, www.skanska.pl','Deweloper','Medusa Group, 41-902 Bytom, Józefczaka 35, tel: (32) 720 30 77, fax: (32) 720 30 75, office@medusagroup.pl, www.medusagroup.pl','Architekt','Skanska S.A., 01-518 Warszawa, Generała Józefa Zajączka 9, tel: (22) 561 30 00, fax: (22) 561 30 01, info@skanska.pl, www.skanska.pl','Generalny Wykonawca','CEGROUP Sp. z o.o. Sp.k., 44-100 Gliwice, Kościuszki 1C IV piętro, tel: (32) 444 66 66, fax: (32) 750 88 53, biuro@cegroup.pl, www.cegroup.pl','Projektant instalacji elektrycznych','','','','','','','','','','','','','','','','','','','','','','','','','','','','',''),
  5. array('116','Warsaw Spire','mazowieckie','01-464','Warszawa','Towarowa','niemieszkaniowy','budynki biurowe','II kwartał 2011','II kwartał 2015','','Stan zamknięty','100000','','','','49','5','','','500 mln - 1 mld','2014-02-20','2014-08-08','Ghelamco Poland Sp. z o.o., 02-672 Warszawa, Domaniewska 52, tel: (22) 455 16 00, fax: (22) 455 16 00, poland@ghelamco.com, www.ghelamco.pl','Deweloper','Jaspers & Eyers Partners, 13-100 Bruksela, Raamstraat 13, tel: +3211222163, fax: ‎+32 11 22 93 90, architects@jaspers-eyers.be, www.jaspers-eyers.be','Architekt','SOLETANCHE POLSKA Sp. z o.o., 01-864 Warszawa, Jana Kochanowskiego 49a, tel: (22) 639 74 11 -14, fax: (22) 639 87 07, office@soletanche.pl, www.soletanche.pl','Generalny Wykonawca','Betula Invest Sp. z o.o., 02-672 Warszawa, Domaniewska 52, tel: (22) 455 16 00, fax: , , ','Inwestor zastępczy','Ghelamco Poland Sp. z o.o., 02-672 Warszawa, Domaniewska 52, tel: (22) 455 16 00, fax: (22) 455 16 00, poland@ghelamco.com, www.ghelamco.pl','Generalny Wykonawca','Przedsiębiorstwo Remontowo Budowlane PeKaBud, 05-250 Radzymin, P.O.W. 16, tel: (22) 618 02 78, fax: (22) 618 02 78, biuro@pekabud.com, www.pekabud.com','Generalny Wykonawca','GRACE Sp. z o.o., 60-541 Poznań, Stanisława Szczepanowskiego 10 lok.2, tel: (61) 843 92 92, fax: (61) 843 21 75, , www.graceconstruction.com','Producent izolacji przeciwwodnych','','','','','','','','','','','','','','','','','','','','','','',''),
  6. array('121','Centrum Handlowe Serenada','małopolskie','31-416','Kraków','ul. Dobrego Pasterza','niemieszkaniowy','budynki handlowo-usługowe','IV kwartał 2014','I kwartał 2016','','Wybór Generalnego Wykonawcy','','42000','','1','3','','','','100 mln - 500 mln','2014-02-12','2014-07-24','Mayland Real Estate Sp. z.o.o, 02-801 Warszawa, Puławska 427, tel: (22) 546 98 00, fax: (22) 546 98 98, biuro@mayland.pl, www.mayland.pl','Deweloper','Amc Andrzej M. Chołdzyński Sp. z o.o., 00-498 Warszawa, Książęca 4, tel: (22) 537 75 15, fax: (22) 537 75 16, amc.sekretariat@amcholdzynski.pl , www.amcholdzynski.pl','Architekt','Groupe Casino, 42 , 1, Esplanade de France, BP 306, tel: +33 4 77 45 31 31, fax: , , <a href="http://www.groupe-casino.fr/en/','Inwestor','PGOM" target="_blank">http://www.groupe-casino.fr/en/','...','PGOM</a> Sp. z o. o., 04-203 Warszawa, Murmańska 25, tel: (22) 379 20 00, fax: (22) 379 20 01, pgom@pgom.pl, www.pgom.pl','Inwestor zastępczy','ATMOTERM Inżynieria Środowiska Sp. z o.o., 00-628 Warszawa, Hoża 66/68 pok. 118-122, tel: (22) 628 71 20, fax: (22) 628 70 81 wew. 106, sekretariat@atmoterm.waw.pl, www.atmoterm.waw.pl','Projektant zieleni','Tikkurila Polska S.A., 39-200 Dębica, Mościckiego 23, tel: (14) 680 56 00, fax: (14) 680 56 01, tikkurilapolska@tikkurila.com, www.tikkurila.pl','Chemia budowlana','','','','','','','','','','','','','','','','','','','','','','','','',''),
  7.  
  8. );
  9. $ile = count($tablica);
  10. echo ($ile.'<br />');
  11. #print_r ($tablica);
  12.  
  13. for ($i=0; $i <$ile; $i++)
  14. {
  15.  
  16.  
  17. if ( $tablica [ $i ][ 24 ] ==
  18. ( '#^Architek#si' , $tablica
  19. [ $i ][ 24 ])))
  20. {echo $i.'PROJEKTANT: '.$tablica[$i][23].'<br/>';}
  21. elseif ($tablica[$i][24] === 'Deweloper')
  22. {echo $i.'INWESTOR: '.$tablica[$i][23].'<br/>';}
  23. else
  24. echo $i.'brak<br />';
  25.  
  26. }
  27.  
kujol
Po wstawieniu tego w pętle:

  1. switch ($tablica [ $i ][ 24 ]){
  2. case "Architekt":
  3. echo $i.'PROJEKTANT: '.$tablica[$i][23].'<br/>';
  4. break;
  5.  
  6. case "Deweloper":
  7. echo $i.'INWESTOR: '.$tablica[$i][23].'<br/>';
  8. break;
  9.  
  10. default:
  11. echo $i.'brak<br />';
  12. break;
  13. }


Zwróciło:

Kod
3
0INWESTOR: Skanska Property Poland Sp. z o.o., 00-854 Warszawa, Al. Jana Pawła II 19, tel: (22) 653 84 00 , fax: (22) 653 84 01, offices@skanska.pl, www.skanska.pl
1INWESTOR: Ghelamco Poland Sp. z o.o., 02-672 Warszawa, Domaniewska 52, tel: (22) 455 16 00, fax: (22) 455 16 00, poland@ghelamco.com, www.ghelamco.pl
2INWESTOR: Mayland Real Estate Sp. z.o.o, 02-801 Warszawa, Puławska 427, tel: (22) 546 98 00, fax: (22) 546 98 98, biuro@mayland.pl, www.mayland.pl


w tablicach dla 0:
Kod
$tablica [ $i ][ 24 ] - Deweloper
$tablica [ $i ][ 23 ] - Skanska Property Poland Sp. z o.o., 00-854 Warszawa, Al. Jana Pawła II 19, tel: (22) 653 84 00 , fax: (22) 653 84 01, offices@skanska.pl, www.skanska.pl


w tablicach dla 1:
Kod
$tablica [ $i ][ 24 ] - Deweloper
$tablica [ $i ][ 23 ] - Ghelamco Poland Sp. z o.o., 02-672 Warszawa, Domaniewska 52, tel: (22) 455 16 00, fax: (22) 455 16 00, poland@ghelamco.com, www.ghelamco.pl


w tablicach dla 2:
Kod
$tablica [ $i ][ 24 ] - Deweloper
$tablica [ $i ][ 23 ] - Mayland Real Estate Sp. z.o.o, 02-801 Warszawa, Puławska 427, tel: (22) 546 98 00, fax: (22) 546 98 98, biuro@mayland.pl, www.mayland.pl
PYJTER
Tak tylko dalej nam pozostaje co w przypaku jak będzie w nazwie zamiast Architekt będzie Architekci lub Biuro Architektoniczne bo to wracamy do punktu wyjścia wink.gif że muszę te 3 nazwy określić jasno a nie mogę zrobić czegoś takiego *Architek* i zwraca mi wszystkie 3 wink.gif więc pozostaje tylko chyba wyrażenie regularne które nie wiedzieć czemu działa ale skrypt zamiast zwracać inwestor to zwraca projektant...


EDIT:

Problem rozwiązany wink.gif przecież preg_match_all zwraca true albo false 0 lub 1 ech... proste rzeczy są najtrudniejsze...
  1. if (preg_match_all('#Architek.*#', $tablica[$i][24]) === 1 )
  2. echo $i.'PROJEKTANT: '.$tablica[$i][23].'<br/>';
  3. elseif ($tablica[$i][24] === 'Deweloper')
  4. echo $i.'INWESTOR: '.$tablica[$i][23].'<br/>';
  5. else
  6. echo $i.'brak<br />';
  7.  
kujol
Tak czasami jest wink.gif na switch wyglądało by to tak:

  1. switch ($tablica [ $i ][ 24 ]){
  2. case preg_match('#^Architek\D+#si', $tablica [ $i ][ 24 ]) > 0;
  3. echo $i.'PROJEKTANT: '.$tablica[$i][23].'<br/>';
  4. break;
  5.  
  6. case preg_match('#.*?\sArchitek\D+$#si', $tablica [ $i ][ 24 ]) > 0;
  7. echo $i.'PROJEKTANT: '.$tablica[$i][23].'<br/>';
  8. break;
  9.  
  10. case "Deweloper":
  11. echo $i.'INWESTOR: '.$tablica[$i][23].'<br/>';
  12. break;
  13.  
  14. default:
  15. echo $i.'brak<br />';
  16. break;
  17. }
CuteOne
Poświęć chwilę na zapoznanie się z tymi funkcjami
http://pl1.php.net/similar_text
http://pl1.php.net/manual/en/function.levenshtein.php
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.