simple HTML dom parser -> edit html

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michel Koonen

Michel Koonen

12/09/2011 21:37:26
Quote Anchor link
Ik heb een heel aantal html files waarvan ik 1 link moet wijzigen naar 1.wmv, 2.wmv , x-1.wmv. Dit wil ik graag automatiseren.
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 !
 
PHP hulp

PHP hulp

27/11/2021 00:16:43
 
Jelmer -

Jelmer -

12/09/2011 23:28:10
Quote Anchor link
Op basis van wat ik vind in http://simplehtmldom.sourceforge.net/manual.htm
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>


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 -
 
Michel Koonen

Michel Koonen

13/09/2011 22:11:13
Quote Anchor link
@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
 
Jelmer -

Jelmer -

15/09/2011 10:42:22
Quote Anchor link
Als je maar 1 link hoeft te veranderen, dan is die foreach-lus niet eens nodig. En let op dat preg_replace regular expressions gebruikt, simpelweg "a" is niet goed genoeg. Voor str_replace wel natuurlijk. (Hint: zet error_reporting van PHP aan, dan zie je dit soort fouten meteen)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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');
?>
 
Pim -

Pim -

15/09/2011 12:21:15
Quote Anchor link
PhpDOM leren gebruiken is ook de moeite waard.
 
Michel Koonen

Michel Koonen

15/09/2011 23:04:17
Quote Anchor link
@jelmer,

Dank !!! Ik heb het nu werkend :-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.