Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Długi preg (operatory początku i końca?)
Forum PHP.pl > Forum > Przedszkole
KsaR
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?
by_ikar
Pokaż kod html oraz wskaż co chcesz wyciągnąć.
KsaR
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.
kreatiff
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>';
KsaR
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/'>
kreatiff
  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.
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.