![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam "mały" problem z preg_match. Wiem... pisano o tym na Forum już wiele razy, ale nie potrafie tego wykorzystać pod "if'ki". O co chodzi. Z bazy "wyjmuję" poprzez $text wszystko to, co w tym polu (ale odkrycie ![]() ![]() Problem tkwi w tym, że w $text znajdują się różne wyrażenia "Rzeczpospolita", albo "Wyborcza". Na przykład id 1 : gdzieś między tagami <iframe></iframe> znajduje się słowo "Rzeczpospolita" id2: gdzieś między tagami <iframe></iframe> znajduje się słowo "Wyborcza". Kombinuję coś na styl:
Podobnie z wyrażeniem "Wyborcza". Po prostu nie wiem, co mam dać jakoś "cos2" Co chcę osiągnąć? "jeśli gdzieś między tagami <iframe></iframe> znajdziesz "Rzeczpospolita" -> pokaż <img src="rp.img">" oraz drugi "if'ek": "jeśli gdzieś między tagami <iframe></iframe> znajdziesz "Wyborcza" -> pokaż <img src="wy.jpg"> Mam nadzieję, ze szczegółowo opisałem... Z góry bardzo WIELKIE dzięki! Ten post edytował roobik 12.10.2013, 22:40:04 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
if($text='#<iframe">(.*?)</a>#', Rzeczpospolita, cos2); co to za krzaki zajrzyj do manuala preg_match
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 10 Dołączył: 21.10.2011 Skąd: UK / PL Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat(klima06) if(preg_match("/<iframe>(.*)Rzeczpospolita(.*)<\/iframe>/i", $text)){... Niestety, ale nie działa. Trochę się pomęczyłem i taki zapis: jest OK (działa). Ale czy mogę prosić jakieś wyjaśnienie? (robiłem to na chybił-trafił)... Jak to w końcu jest, że mimo, że w polu text znajduje się fraza Rzeczpospolita i w dodatku jest ona między znacznikami iframe - to jak chcę wyszukać z zastrzeżeniem, że ma wyszukać między <iframe> </iframe>, to działa i bez tego "zastrzeżenia"...? Jak to u mnie wygląda (treść w polu text wywoływana przez $text? np. id 1: Cytat Jak donosi "Rzeczpospolita"... itd id 2: Cytat Jak donosi "Gazeta Wyborcza"... itd Ten post edytował roobik 14.10.2013, 18:22:38 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 10 Dołączył: 21.10.2011 Skąd: UK / PL Ostrzeżenie: (0%) ![]() ![]() |
Co chcę osiągnąć? "jeśli gdzieś między tagami <iframe></iframe> znajdziesz "Rzeczpospolita" -> pokaż <img src="rp.img">" oraz drugi "if'ek": "jeśli gdzieś między tagami <iframe></iframe> znajdziesz "Wyborcza" -> pokaż <img src="wy.jpg"> Mój kod bardzo dobrze działał, oto test:
Wynik: Cytat Test 1 - True Test 2 - False True jest tylko wtedy kiedy fraza zostanie znaleziona pomiędzy tagami <iframe>. Ten post edytował klima06 14.10.2013, 19:29:17 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tak, zgadza się... Jest jednak małe "ale".
Otóż tu chodzi raczej o to, że frazy: "Rzeczpospolita" oraz "Wyborcza" są w cudzysłowiu (" "). Coraz rzadziej potrzebuję pomocy na Forum, ale po prostu nurtuje mnie takie pytanie: Dlaczego Twój zapis: Cytat(klima06) if(preg_match("/<iframe>(.*)Rzeczpospolita(.*)<\/iframe>/i", $text)){ ... nie działa u mnie a mój "przekombinowany" kod, czyli Cytat if(preg_match("!Rzeczpospolita!si", $text)) { ... działa całkiem poprawnie...? Może za bardzo kombinuję, ale może tu chodzi o to, że u Ciebie jest w kodzie /i, a u mnie jest si ? Chwilowo tego po prostu nie rozumiem... Jeśli znasz odp - byłbym wdzięczny - oczywiście daję "Pomógł" ![]() Pozdrawiam! Ten post edytował roobik 14.10.2013, 19:44:29 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 10 Dołączył: 21.10.2011 Skąd: UK / PL Ostrzeżenie: (0%) ![]() ![]() |
/i oznacza, że pattern nie patrzy czy są duże czy małe litery.
/s oznacza, że jeśli w patternie występuje . (kropka) to zastępuje ona dowolny znak włączając znak nowej linii (bez /s znak nowej linii nie wliczałby się w .) (możesz to śmiało wywalić ze swojego patternu). Twój pattern !Rzeczpospolita!si po prostu sprawdza czy w zmiennej $text znajduje się słowo Rzeczpospolita (nie ważne czy dużymi czy małymi literami pisana). Mój zaś pattern sprawdzał czy to słowo występuje pomiędzy tagami <iframe>. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 410 Pomógł: 5 Dołączył: 25.01.2005 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
I właśnie o to chodziło
![]() klima06 - dzięki WIELKIE!!! Właśnie potestowałem to wszystko u siebie - jest jak najbardziej w porządku ![]() Jeszcze raz dziękuję! ![]() Pozdrawiam! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 09:09 |