simple HTML dom parser -> edit html
Om van iedere html file te weten waar ze nu naartoe verwijzen, gebruik ik de html dom parser ->http://simplehtmldom.sourceforge.net/
Deze toont voor iedere (in een loop doorloop ik iedere html file in een dir) html-file exact de link in de html file:
$html = file_get_html('hier komt de naam van de file');
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
Stel dat voor html file 1 de link: a.wmv is... wil ik deze wijzigen in 1.wmv
Uiteraard is dit puur een voorbeeld.
Hoe krijg ik dat echter voor elkaar? Ik kom er met de info op die site niet uit.
Alvast dank !
http://simplehtmldom.sourceforge.net/manual.htm
Misschien moet je voor je update_link functie iets met preg_replace doen, en misschien moet je niet alle <a>-elementen af gaan, maar alleen die in een bepaalde div, maar dit is de basis denk ik.
Op basis van wat ik vind in Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$html = file_get_html('hier komt de naam van de file');
// Find all links
foreach($html->find('a') as $element)
$element->href = update_link($element->href);
$html->save('naam van file');
function update_link($url)
{
// voorbeeldje. Hier kan je je eigen wijziging in zetten. Per link wordt die dan uitgevoerd
return 'x-' . $url;
}
?>
$html = file_get_html('hier komt de naam van de file');
// Find all links
foreach($html->find('a') as $element)
$element->href = update_link($element->href);
$html->save('naam van file');
function update_link($url)
{
// voorbeeldje. Hier kan je je eigen wijziging in zetten. Per link wordt die dan uitgevoerd
return 'x-' . $url;
}
?>
Misschien moet je voor je update_link functie iets met preg_replace doen, en misschien moet je niet alle <a>-elementen af gaan, maar alleen die in een bepaalde div, maar dit is de basis denk ik.
Gewijzigd op 12/09/2011 23:32:17 door Jelmer -
Dank voor je hulp.
Voor jouw info: van iedere html file krijg ik 1 link terug. Ik zie de toegevoegde waarde niet van een functie?... is onderstaande info (wat nog geoptimaliseerd kan worden) wat je bedoelde qua oplossing?
$html = file_get_html('File1.html');//v.b. File1.html is de 1e file die ik wil wijzigen
foreach($html->find('a') as $element)
$movielink = $element->href; //levert bij file1.html -> a.wmv
$old = "a"; //via str_replace optimaliseer ik dat later..
$replacement = "1";
$linktomovie_newname = preg_replace($old, $replacement, $movielink);
$html->save('File1.html');
Gewijzigd op 13/09/2011 22:11:47 door Michel Koonen
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$html = file_get_html('File1.html');//v.b. File1.html is de 1e file die ik wil wijzigen
if (($element = $html->find('a'))) // let op: dat is een assignment met opzet!
$element->href = str_replace("a", "1", $element->href);
$html->save('File1.html');
?>
$html = file_get_html('File1.html');//v.b. File1.html is de 1e file die ik wil wijzigen
if (($element = $html->find('a'))) // let op: dat is een assignment met opzet!
$element->href = str_replace("a", "1", $element->href);
$html->save('File1.html');
?>
PhpDOM leren gebruiken is ook de moeite waard.
Dank !!! Ik heb het nu werkend :-)