Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Preg_replace + Dane z pliku.txt
Forum PHP.pl > Forum > Przedszkole
paramount
Witam,

Pobieram z kanału RSS wyniki z wyszukiwarki i chciałbym filtrować niektóre adresy WWW.

Obecnie by usunąć/wykasować całe linki używam np:
  1. $url = preg_replace("'http://www.togo.de/.*'", "",$url);


Szukam funkcji która pobierze dane stron WWW do wykasowania z pliku.TXT

Kombinowałem z takim rozwiązaniem:
  1. $lines = file("cenzuraurl.txt");
  2.  
  3. foreach($lines as $line)
  4. {
  5. $url = preg_replace("'$line/.*'", "",$url);
  6. }


Jednak bez rezultatu ):

Bazuję na szablonie Smarty i obecnie mam takie rozwiązanie:

  1. {foreach item=bing from=$dane name=foo}
  2. {if $bing.url}<a href="#" onclick="window.open('{$bing.url|escape|trim}');">{$bing.title|trim|lower|strip_tags:false|replace:'...':''}</a>{/if}



Będę wdzięczny za pomoc lub wskazówkę.
wNogachSpisz
Należałoby zrobić jak bozia przykazała.
Zastosować biblitekę konwertującą XML do postaci obkektu (wnioskuje że to XML skoro pobierasz go RSS).
Następnie przespacerować się po elementach takiego obiektu i zrobić swoje.

Zadne preg_replace, bo będę zły!

Daj przykład danych do przemielenia.
paramount
Hey,

Wyciągam dane RSS poprzez klasy typu: Snoopy.class.inc , apicall.inc, rss_parse.inc itd.

Stworzyłem takie cosik, jednakże nie jestem do tego przekonany.
$search - zmienna którą wykorzystuje na swojej stronie dla wyników wyszukiwania.

  1. $search = htmlentities(urlencode($_GET['search']));
  2. require_once 'apicall.inc';
  3. $search = str_replace($replace, $with, $search);
  4. $apicall ="http://www.bing.com/search?q=doda&format=rss";
  5. $rss = fetch_rss($apicall);
  6. foreach ($rss->items as $item ) {
  7. $title = $item["title"];
  8. $title = mb_convert_encoding($title, 'HTML-ENTITIES', "UTF-8");
  9. $url = $item["link"];
  10. $data = $item["pubdate"];
  11. $description = $item["description"];
  12. $description = mb_convert_encoding($description, 'HTML-ENTITIES', "UTF-8");
  13. $title = str_replace("$search", "$search", $title);
  14. preg_match("/^(http:\/\/)?([^\/]+)/i",
  15. "$url", $matches);
  16.  
  17. $url = preg_replace("'http://www.togo.de/.*'", "",$url);
  18.  
  19. $host = $matches[2];
  20. preg_match("/[^\\/]+\.[^\.\/]+$/", $host, $matches);
  21. $baseurl = $matches[0];
  22. $dane[] = array('title' => $title, 'url' => $url, 'description' => $description, 'data' => $data);
  23. $tpl->assign('dane', $dane);
  24. }


Potem wyciągam dane i wstawiam je do szablonu smarty:
  1. {foreach item=bing from=$dane name=foo}
  2. {if $bing.url}<a href="#" onclick="window.open('{$bing.url|escape|trim}');">{$bing.title|trim|lower|strip_tags:false|replace:'...':''}</a>{/if}

Tyle co wyszperałem w manualach smile.gif

I niby filtruje adres podany w zmiennej $url
Ale tylko 1 adres, nie umiem wykombinować by filtrował mi np.: 100 linków z pliku.txt sad.gif

Proszę o pomoc.

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.