Archief - href waarde extracten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

GregoryCo

Legacy Member
Ik heb dus een array waar allerlei links inzitten, inclusief de html tags.
Wat ik dus wil is dat ik enkel hetgeen in de href kan bekomen.

Bvb.
Code:
<a href="http://www.ditwilik.com"></a>
Hiervan wil ik enkel de link http://www.ditwilik.com (zonder quotes) extracten.

Kent iemand een goede methode om dit te doen?

Met preg_match lukt het nie echt, ofwel doe ik iets verkeerd.

Bedankt

GregoryCo

Legacy Member
Ben ik idd al tegengekomen W0utR.

Alleen weet ik niet of dit een goeie oplossing is. Sommigen zeggen gebruik geen regex, anderen zeggen dan weer wel...

W0utR

Legacy Member
Wat is de reden dat ze dit zeggen? Er zullen zeker wel andere manieren zijn, maar een regex is daar juist voor gemaakt.

In computing, a regular expression provides a concise and flexible means to "match" (specify and recognize) strings of text, such as particular characters, words, or patterns of characters. Common abbreviations for "regular expression" include regex and regexp.
Dus dit lijkt mij echt wel de juiste manier om het te doen.

Zir0h

Legacy Member
GregoryCo zei:
Met preg_match lukt het nie echt, ofwel doe ik iets verkeerd.

PHP:
<?php
$page = 'https://www.beyondgaming.be/archive/web-design-programming.237/href-waarde-extracten.883625';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $page);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

preg_match_all('/(href=".*?")/', $output, $matches);

echo '<pre>';

print_r($matches[1]);

foreach($matches[1] as $match) {
	preg_match('/href="(.*?)"/', $match, $match2);
	print_r($match2[1]); 
	echo '<br />';
}

dJeez

Legacy Member
Als je ze allemaal in een geldig document steekt kan je ook een DOM parser gebruiken om enkel de anchors te selecteren (al dan niet dmv XPath) en daar dan de href van uit te lezen.

Iets als volgt dus : php dom get all attributes of a node - Stack Overflow.

Maar dat veronderstelt dus wel dat het geldige HTML is (anders verslikt de DOM parser er zich op). Eventueel kan je wel met externe tools/libs (zoals HTMLTidy) de HTML opkuisen. Dat is programmatorisch iets properder dan met regexes te werken, zeker als je effectief geldige HTML als input hebt.

GregoryCo

Legacy Member
Kheb het anders kunnen oplossen. Maar nu krijg ik wel vuile links, waar slashes bijstaan waardoor de link niet meer kan bekeken worden. Maar kzal daar nog eens moeten naar kijken.

Bedankt iedereen

W0utR

Legacy Member
Altijd handig om je eigen oplossing ook even te delen als je de oplossingen van anderen niet gebruikt.

GregoryCo

Legacy Member
Het is eigenlijk geen oplossing, heb het gewoon anders gedaan.
Ik heb de html tags behouden en er een html mail van gemaakt (wat uiteindelijk toch de bedoeling was). Ik had die links dus nodig om die te kunnen verzenden via mail.

Edit: Het probleem met de overbodige slashes heb ik kunnen oplossen met stripslashes()
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan