preg_match url

  • Onderwerp starter Onderwerp starter lano
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

lano

Gebruiker
Lid geworden
1 sep 2013
Berichten
20
Beste Forum lezers,

Met onderstaande code wil ik graag de link uit de url halen, maar het wil me maar niet lukken. Hopelijk kan iemand van jullie mij helpen.

Als ik het met de 'href=' doe werkt de code maar de linken die ik graag wil hebben komen geen 'href=' in voor, maar url, zie code
Code:
dit is de html code waar ik de link uit wil hebben:
<a style="background-image: url("//mijnwebsite.com/");"></a>
<?php
  $url='www.mijnwebsite.nl';
  $input = @file_get_contents($url) or die("Could not access file: $url");
  $regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
  if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
      echo $match[2];
      //echo $match[3];
    }
  }

?>
 
Laatst bewerkt:
Hoe nauwkeurig moet het zijn? alleen URL() blokken in <a> blokken?

In principe kan je dan toch gewoon de href= versie pakken en vervangen door url ? Alleen is de href variant veel ingewikkelder dan nodig voor het hier gegeven voorbeeld.
 
Bedankt voor je reactie Wampier,
Het is de bedoeling dat hij deze link er uit haalt: mijnwebsite.com/00/s/NzY4WDEwMjQ=
kun je een voorbeeldje geven hoe ik het aan kan passen?
Dit heb ik al geprobeerd maar werkt helaas niet: $regexp = "<a\s[^>]*background-image: url(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
en dit ook niet: $regexp = "<a\s[^>]*url(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
 
Laatst bewerkt:
Krijg nu geen foutmelding met onderstaande aanpassing, maar hij laat ook niets zien.
Code:
  $input = @file_get_contents($url) or die("Could not access file: $url");
   $regexp = "<a.*url\(\"([^\"]+)";
  if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
      echo $match[2];
      //echo $match[3];
    }
  }
 
De match staat in 0/1 niet in match[2]

probeer eens
PHP:
 print_r($match);
op de plaats van je "echo"
 
Hij geeft niets terug. Het is de bedoeling dat het script de foto's van mijn auto die te koop staat op markt laat zien.
Hierbij het volledige script, misschien zie je dan wel wat er mis is en of het eventueel wel kan.
ps. het gaat om de thumb onderaan de grote foto, staan de kleinere foto's die ik bedoel.
Dit is de link waar ik het graag uit wil halen:

Code:
<?php





  $input = @file_get_contents($url) or die("Could not access file: $url");
   $regexp = "<a.*url\(\"([^\"]+)";
  if(preg_match_all("/$regexp/siU", $input, $matches, PREG_SET_ORDER)) {
    foreach($matches as $match) {
      echo $match[0];
	  print_r($match);

      //echo $match[3];
    }
  }



?>
 
Laatst bewerkt:
op mijn regexp constructor werkt het, maar mogelijk heeft php een iets andere interpretatie, ik zal eens mijn php opstarten
 
Oke, ik ben benieuwt. Alvast bedankt voor de moeite.
 
er staan geen haakjes om de url in de gegeven link. als ik de raw data doorzoek van je link vind ik nergens:

url(

daarom wordt er niets gematched
 
Bedankt voor je hulp en moeite die voor mij gedaan hebt Wampier, ik ga proberen een andere oplossing te zoeken.
 
Laatst bewerkt:
in je source staan ze zo:

Code:
data-images-s="//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqFHJE!FIBZTB-edBSDN+ynuYQ~~60_82.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$T2eC16J,!zcE9s4g0ur5BSDO!D)eE!~~60_82.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqZ,!oIFIF3fwjduBSDO!1wik!~~60_82.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqZ,!o4FHvb-gUQ,BSDOBQvFbw~~60_82.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$T2eC16N,!ygE9s7HHqTEBSDOBfb0tQ~~60_82.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqF,!rEFH5Ev8HlVBSDOBtKTR!~~60_82.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqJHJEkFH-qh4RkOBSDOB8LJbg~~60_82.JPG" data-images-l="//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqFHJE!FIBZTB-edBSDN+ynuYQ~~60_84.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$T2eC16J,!zcE9s4g0ur5BSDO!D)eE!~~60_84.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqZ,!oIFIF3fwjduBSDO!1wik!~~60_84.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqZ,!o4FHvb-gUQ,BSDOBQvFbw~~60_84.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$T2eC16N,!ygE9s7HHqTEBSDOBfb0tQ~~60_84.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqF,!rEFH5Ev8HlVBSDOBtKTR!~~60_84.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqJHJEkFH-qh4RkOBSDOB8LJbg~~60_84.JPG" data-images-xl="//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqFHJE!FIBZTB-edBSDN+ynuYQ~~60_85.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$T2eC16J,!zcE9s4g0ur5BSDO!D)eE!~~60_85.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqZ,!oIFIF3fwjduBSDO!1wik!~~60_85.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqZ,!o4FHvb-gUQ,BSDOBQvFbw~~60_85.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$T2eC16N,!ygE9s7HHqTEBSDOBfb0tQ~~60_85.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqF,!rEFH5Ev8HlVBSDOBtKTR!~~60_85.JPG&//i.marktplaats.com/00/s/NzY4WDEwMjQ=/$(KGrHqJHJEkFH-qh4RkOBSDOB8LJbg~~60_85.JPG"

je kun dan zoiets doen:

PHP:
<?php
  $url = 'http://www.marktplaats.nl/a/auto-s/peugeot/a1003708461-peugeot-107-1-0-urban-3deurs-53920km-2011-1ste-eigenaar.html?c=2462dea5135e2e0e36188730a425fc95&previousPage=lr';
  $input = @file_get_contents($url) or die("Could not access file: $url");
  $regexp = 'data-images-s="((//([^& ]+)&?)+)';
  $regexp2 = '(//([^& ]+)&?)+?';
  if(preg_match_all("%$regexp%siS", $input, $matches, PREG_SET_ORDER)) {
    $subpatroon = $matches[0][1];
	if(preg_match_all("%$regexp2%siS", $subpatroon, $matches, PREG_SET_ORDER)) {
    	foreach($matches as $match) {
			echo htmlspecialchars($match[2]);
			echo "<BR><BR><BR>";
		}
    }
  }
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan