Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Preg_match
Forum PHP.pl > Forum > Przedszkole
damian0021
Witajcie,

mam pewien skrypcik, który chce aby pobierał dane i wrzucał je w jedno miejsce:

Zrobiłem coś takiego:
  1. $dane_wejsciowe_nazwa = $b;
  2. preg_match('~<span class="Title">([^<]*)</span>~Usmi', $dane_wejsciowe_nazwa, $dane_wejsciowe_nazwa_dopasowania);
  3. $nazwa_produktu = $dane_wejsciowe_nazwa_dopasowania[1];
  4.  
  5. $co[] = 'class="OfferLink">';
  6. $na[] = 'itemscope="" itemtype="http://schema.org/Offer" onclick="ga(\'send\', \'event\', \''.$_SERVER['REQUEST_URI'].'\', \''.$nazwa_produktu.'\');" class="OfferLink">';
  7. $b = str_replace($co,$na,$b);


Wszystko się ładnie wyświetla, działa jak należy, tylko dane zawsze pobierane są z 1 produktu. Poniżej zrzut ekranu jaki kod dostaje:



Ktoś może pomóc ? sad.gif
Pyton_000
preg_match_all
markuz
Do HTML nie używa się regex. Tu masz wyjaśnione: https://stackoverflow.com/questions/1732348...-contained-tags
damian0021
Podmineiam to na preg_match_all:

  1. $dane_wejsciowe_nazwa = $b;
  2. preg_match_all("~<span class=\"NOK-Title\">([^<]*)<\/span>~Usmi", $dane_wejsciowe_nazwa, $dane_wejsciowe_nazwa_dopasowania);
  3.  
  4.  
  5.  
  6. $co[] = 'class="NOK-OfferLink">';
  7. $na[] = 'itemscope="" itemtype="http://schema.org/Offer" onclick="ga(\'send\', \'event\', \''.$_SERVER['REQUEST_URI'].'\', \''.$dane_wejsciowe_nazwa_dopasowania[1][1].'\');" class="NOK-OfferLink">';


I też lipa.

Up.
Pyton_000
Pokaż większy fragment HTML z którego ma być wyciągany tekst oraz co ma być wynikiem.
damian0021
Pogląd na żywo na: http://seowars.cba.pl/

Cały kod - przed pomianą:

  1. <a href="http://allegro.pl" target="_blank" rel="nofollow" class="Offer"><br>
  2. <img src="http://seowars.cba.pl/wp-content/uploads/2017/05/russell-hobbs-20680-56.jpg" class="Image"><br>
  3. <span class="Tytul">Zły ekspres</span><br>
  4. <span class="Cena">199 zł</span><br>
  5. <span class="Klik">ZOBACZ</span><br>
  6. </a>


A chcę aby podmienić na:

  1. <a href="http://allegro.pl" target="_blank" rel="nofollow" itemscope="" itemtype="http://schema.org/Offer" onclick="ga('send', 'event', '/', 'Zły ekspres');" class="Offer"><br>
  2. <img src="http://seowars.cba.pl/wp-content/uploads/2017/05/russell-hobbs-20680-56.jpg" itemprop="Image" class="Image"><br>
  3. <span class="Tytul"><span itemprop="name">Zły ekspres</span></span><br>
  4. <span class="Cena">199 zł</span><br>
  5. <span class="Klik">Sprawdź cenę</span><br>
  6. </a>



Jak widać wszystko mi podmienia jak chce, jednak cały czas pobiera mi nazwę 1 produktu.

Cały kod PHP:

  1. <?php
  2.  
  3. function w_callback($b){
  4.  
  5. $co = $na = array();
  6. $co_r = $na_r = array();
  7.  
  8. preg_match_all('~<span class="Tytul">([^<]*)</span>~Usmi', $b, $dane_wejsciowe_nazwa_dopasowania);
  9. foreach ($dane_wejsciowe_nazwa_dopasowania[1] as $key) {
  10. $co_arr[] .= 'class="Offer">';
  11. $na_arr[] .= 'itemscope="" itemtype="http://schema.org/Offer" onclick="ga(\'send\', \'event\', \''.$_SERVER['REQUEST_URI'].'\', \''.$key.'\');" class="Offer">';
  12. }
  13.  
  14.  
  15. $b = str_replace($co,$na,$b);
  16. $b = preg_replace($co_r,$na_r,$b);
  17. $b = str_replace($co_arr, $na_arr, $b);
  18.  
  19. return $b;
  20. }
  21. if(stristr($_SERVER['REQUEST_URI'],'wp-admin')===false) ob_start('w_callback');
  22. ?>


Ale cały czas pobiera tylko 1 produkt.
Pyton_000
https://regex101.com/r/0vKtC7/2 i to w preg_match_all wpakuj
damian0021
Cytat(Pyton_000 @ 29.05.2017, 10:23:21 ) *
https://regex101.com/r/0vKtC7/2 i to w preg_match_all wpakuj



Nie działa, napisałem PW.

Up.

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