Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Preg_match
damian0021
post
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.05.2010

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


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





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

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


preg_match_all
Go to the top of the page
+Quote Post
markuz
post
Post #3





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Do HTML nie używa się regex. Tu masz wyjaśnione: https://stackoverflow.com/questions/1732348...-contained-tags


--------------------
Go to the top of the page
+Quote Post
damian0021
post
Post #4





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.05.2010

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


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





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

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


Pokaż większy fragment HTML z którego ma być wyciągany tekst oraz co ma być wynikiem.
Go to the top of the page
+Quote Post
damian0021
post
Post #6





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.05.2010

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


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.

Ten post edytował damian0021 29.05.2017, 09:22:50
Go to the top of the page
+Quote Post
Pyton_000
post
Post #7





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

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


https://regex101.com/r/0vKtC7/2 i to w preg_match_all wpakuj

Ten post edytował Pyton_000 29.05.2017, 09:23:41
Go to the top of the page
+Quote Post
damian0021
post
Post #8





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.05.2010

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


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.
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: 20.08.2025 - 09:18