Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyciagniecie z html adresu grafiki
Forum PHP.pl > Forum > PHP
esos
witam
grzebiac na hdd znalazlem zrzucone na dysk forum dyskusyjne sprzed kilku ladnych lat kiedy to jeszcze bylem mlody, mialem wlosy i jezdzilem stopem po kraju. niestety zrzucajac forum, zapisalem sam txt bez grafy ;/ zaczalem teraz przegladac kod i z tego co widze, w kodzie mam zachowane adresy grafik/zdjec itp smile.gif problem w tym, ze tych stron jest taka masa, ze recznie nie dam rady odpalic kazdej z nich zeby zapisac sobie pamiatkowe foty (o ile sa jeszcze online) na dysku.

wpadlem wiec na pomysl, by napisac skrypt ktory przeszpera mi html`a zrzutow i wylapie tekst zawarty pomiedzy tagami <img...></img>. teoretycznie uzyskalbym w ten spos spis adresow grafik ktory moglbym podac do jakiegos softu ssajacego i zamiast recznie klikac [zapisz jako] - soft zrzucilby mi je ladnie na hdd.

problem w tym, ze.. nijak nie mam pomyslu jak toto napisac ;/
nie mam zielonego pojecia jak wylapac WSZYSTKIE ciagi od <img...> do </img> znajdujace sie w tekscie.

probowalem bawic sie wyrazeniami regularnymi, ale one tylko sa w stanie (na poziomie ktory znam) powiedziec, czy taki ciag wystepuje w kodzie [tekscie]. jak inaczej do tego podejsc?
myth
  1. <?php
  2. /* nazwa pliku */
  3. $sFile = "aaa.txt";
  4.  
  5. $sHandle = fopen($sFile, "r");
  6. $sHtml = fread($sHandle, filesize($sFile));
  7. fclose($sHandle);
  8.  
  9. preg_match_all('#<img src="([A-Za-z0-9_.:/]+)"></img>#si', $sHtml, $aMatches);
  10.  
  11. $cntArray = count($aMatches[1]);
  12. for($i = 0; $i < $cntArray; $i++)
  13. {
  14. echo $aMatches[1][$i].'<br />';
  15. }
  16. ?>


Przykładowo z
<img src="http://wp.pl/1.jpg"></img>
wyciągnie
http://wp.pl/1.jpg

Powinno być ok, pisane na szybko.
bendi
sama regulka moze byc bardziej uniwersalna (jak atrybut src nie wystepuje jako pierwszy)
Kod
#<img.*?src=("|')?(.*?)(?(1)$1| )#
esos
rozwiazalem to w jeszcze inny sposob:
kod wczytuje jako zmienna i wykorzystuje takie 'cóś' co wygrzebalem na php.net winksmiley.jpg

  1. <?php
  2. function Return_Substrings($text, $sopener, $scloser)
  3.  {
  4.  $result = array();
  5.  
  6.  $noresult = substr_count($text, $sopener);
  7.  $ncresult = substr_count($text, $scloser);
  8.  
  9.  if ($noresult < $ncresult)
  10.  $nresult = $noresult;
  11.  else
  12.  $nresult = $ncresult;
  13.  
  14.  unset($noresult);
  15.  unset($ncresult);
  16.  
  17.  for ($i=0;$i<$nresult;$i++) 
  18.  {
  19.  $pos = strpos($text, $sopener) + strlen($sopener);
  20.  
  21.  $text = substr($text, $pos, strlen($text));
  22.  
  23.  $pos = strpos($text, $scloser);
  24.  
  25.  $result[] = substr($text, 0, $pos);
  26.  
  27.  $text = substr($text, $pos + strlen($scloser), strlen($text));
  28.  }
  29.  
  30.  return $result;
  31.  }
  32.  $string = $kodWWW;
  33.  
  34.  $result = Return_Substrings($string, "src=", ">");
  35. ?>


odczytuje potem tablice result[] i wybijam jeszcze przez str_replace wszelakie apostrofy ktore mi sie ostaly - w ten spos zawsze wykona mi sie warunek bez wzgledu na to, czy apostrofy byly poj, po2, czy nie bylo ich wcale

dzieki za pomoc smile.gif
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.