Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Długi preg (operatory początku i końca?)
KsaR
post
Post #1





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Mam dość długi preg...
I chciałbym żeby się wykonał tylko cały a nie w części.

  1. preg_match_all("/<img src='\/images\/icon\/_a_\.png' alt='_a_'\/> A: (.+?)<br\/><img src='\/images\/icon\/_b_\.png' alt='_b_'\/> B: (.+?)<br\/><img src='\/images\/icon\/_c_\.png' alt='_c_'\/> C: (.+?)<br\/><img src='\/images\/icon\/_d_\.png' alt='_d_'\/> D: (.+?)<br\/><br\/><a class='btn' href='\/league\/fight\/(.+?)'>/", $site, $siteOut);


taki preg wyłapuje wszystkie (.+?) jakie dałem.
Chce teraz żeby wyłpał tylko jak wzór cały będzie identyczny.
Niestety słabo znam się na wyrażeniach ale pomyślałem o operatorze początku i końca.
więc zrobiłem tak:
/^tupreg$/
potem kombinacje samo ^ lub $ itd ostatecznie nawet /^(tupreg)$/
i jak tylko są dodane te operatory nie zwraca mi nic.

Co muszę zrobić żeby wyłapywało tylko ciąg jeśli pasuje do całego prega?

Ten post edytował Ksar 16.11.2014, 12:10:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Pokaż kod html oraz wskaż co chcesz wyciągnąć.
Go to the top of the page
+Quote Post
KsaR
post
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(by_ikar @ 16.11.2014, 14:47:51 ) *
Pokaż kod html oraz wskaż co chcesz wyciągnąć.


Html (troche skrocone co nad i pod):
  1. <img src='/images/icon/str.png' alt='str'/> Siła: 50<br/><img src='/images/icon/vit.png' alt='vit'/> Zdrowie: 50<br/><img src='/images/icon/agi.png' alt='agi'/> Zręczność: 50<br/><img src='/images/icon/def.png' alt='def'/> Obrona: 50<br/><br/><a class='btn' href='/league/fight/144/72164025/'><span class='end'><span class='label'>Atak</span></span></a><div style='clear:both;'></div></div><div class='dot-line'></div><div class='block_zero'><div class='float-left'><a href='/league/fight/146/72164025/'><img src='/manekenimage/0/0/f/354/106/115/357/109/86/111/48/1129566638.w?4' width='120' height='160' style='margin-right:10px;margin-top:3px;' alt=''/></a></div><img src='/images/icon/race/1.png' alt=''/> <b>146. Xymcof</b><br/><br/><img src='/images/icon/str.png' alt='str'/> Siła: 50<br/><img src='/images/icon/vit.png' alt='vit'/> Zdrowie: 50<br/><img src='/images/icon/agi.png' alt='agi'/> Zręczność: 50<br/><img src='/images/icon/def.png' alt='def'/> Obrona: 50<br/><br/><a class='btn' href='/league/fight/146/72164025/'>

Preg:
/<img src='\/images\/icon\/str\.png' alt='str'\/> Siła: (.+?)<br\/><img src='\/images\/icon\/vit\.png' alt='vit'\/> Zdrowie: (.+?)<br\/><img src='\/images\/icon\/agi\.png' alt='agi'\/> Zręczność: (.+?)<br\/><img src='\/images\/icon\/def\.png' alt='def'\/> Obrona: (.+?)<br\/><br\/><a class='btn' href='\/league\/fight\/(.+?)'>/

Ma pobać wszystkie (.+?) tylko jeśli kod HTML po: "Obrona: COŚ<" do końca patternu jest identyczny - bo może się zmienić i wtedy ma szukać innych dopasowań (max 4).

Oczywiście w każdym (.+?) jest coś losowego.

Ten post edytował Ksar 16.11.2014, 15:43:18
Go to the top of the page
+Quote Post
kreatiff
post
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Ja nie rozumiem, więc jeśli o mnie chodzi to wklej ten tekst jeszcze raz (ale nie w znaczniku code) i wybolduj to co chcesz otrzymać w wyniku. I tylko to. Zaznacz też jakoś (kursywą) to co we wzorze musi się znaleźć, by w ogóle łapać wyboldowany tekst z zadanego fragmentu. Chyba, że to chodzi po prostu o to:
  1. preg_match_all('#Siła: (\d+).*?Zdrowie: (\d+).*?Zręczność: (\d+).*?Obrona: (\d+)(?><br/><br/><a class=\'btn\' href=\'/league/fight/146/72164025/\'>)#u', $kod, $a);
  2. echo'<pre>',var_dump($a),'</pre>';


Ten post edytował kreatiff 16.11.2014, 17:33:24
Go to the top of the page
+Quote Post
KsaR
post
Post #5





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(kreatiff @ 16.11.2014, 17:24:15 ) *
Ja nie rozumiem, więc jeśli o mnie chodzi to wklej ten tekst jeszcze raz (ale nie w znaczniku code) i wybolduj to co chcesz otrzymać w wyniku. I tylko to. Zaznacz też jakoś (kursywą) to co we wzorze musi się znaleźć, by w ogóle łapać wyboldowany tekst z zadanego fragmentu. Chyba, że to chodzi po prostu o to:
  1. preg_match_all('#Siła: (\d+).*?Zdrowie: (\d+).*?Zręczność: (\d+).*?Obrona: (\d+)(?><br/><br/><a class=\'btn\' href=\'/league/fight/146/72164025/\'>)#u', $kod, $a);
  2. echo'<pre>',var_dump($a),'</pre>';


bold - chce mieć
underline - musi byc żeby pobrało to co wcześniej (z boldem) jak nie ma to nie ma pobierać - a może się zmienić.
italic - ma zniknac ..

<img src='/images/icon/str.png' alt='str'/> Siła: 50<br/><img src='/images/icon/vit.png' alt='vit'/> Zdrowie: 50<br/><img src='/images/icon/agi.png' alt='agi'/> Zręczność: 50<br/><img src='/images/icon/def.png' alt='def'/> Obrona: 50<br/><br/><a class='btn' href='/league/fight/144/72164025/'>

Ten post edytował Ksar 16.11.2014, 17:47:59
Go to the top of the page
+Quote Post
kreatiff
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


  1. preg_match_all("#<img src='/images/icon/str\.png' alt='str'/> Siła: (\d+)<br/><img src='/images/icon/vit\.png' alt='vit'/> Zdrowie: (\d+)<br/><img src='/images/icon/agi\.png' alt='agi'/> Zręczność: (\d+)<br/><img src='/images/icon/def\.png' alt='def'/> Obrona: (\d+)(?><br/><br/><a class='btn' href='/league/fight/)(\d+/\d+/)'#u", $txt, $a);
  2. echo'<pre>',var_dump($a),'</pre>';

Acha, źle zajarzyłem końcówkę. Wystarczy wrzucić to wyboldowane i podkreslone ID do nawiasu z tzw. look ahead, czyli dokładnie tak jak w pierwszym przykładzie.

Ten post edytował kreatiff 16.11.2014, 17:59:19
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 26.09.2025 - 03:45