Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak sprawdzić częściową zgodność...
PYJTER
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 23.01.2014

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


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...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
PrinceOfPersia
post
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


wyrażenia regularne.


--------------------
Go to the top of the page
+Quote Post
matiit
post
Post #3





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


  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.

Ten post edytował matiit 24.02.2014, 20:49:24
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


możesz też stripos
Go to the top of the page
+Quote Post
PYJTER
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 23.01.2014

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


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])));
Go to the top of the page
+Quote Post
kujol
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


  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"

Ten post edytował kujol 24.02.2014, 21:51:42


--------------------
;)
Go to the top of the page
+Quote Post
PYJTER
post
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 23.01.2014

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


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.  
Go to the top of the page
+Quote Post
kujol
post
Post #8





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


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


Ten post edytował kujol 25.02.2014, 08:54:57


--------------------
;)
Go to the top of the page
+Quote Post
PYJTER
post
Post #9





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 23.01.2014

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


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.  


Ten post edytował PYJTER 25.02.2014, 09:44:07
Go to the top of the page
+Quote Post
kujol
post
Post #10





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


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. }


--------------------
;)
Go to the top of the page
+Quote Post
CuteOne
post
Post #11





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Poświęć chwilę na zapoznanie się z tymi funkcjami
http://pl1.php.net/similar_text
http://pl1.php.net/manual/en/function.levenshtein.php

Ten post edytował CuteOne 25.02.2014, 11:02:20
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 Aktualny czas: 22.08.2025 - 06:10