Ich verwende ein kleines Skript, um von absoluten Links zu relativen zu konvertieren. Es funktioniert, aber es muss verbessert werden. Ich bin mir nicht sicher, wie es weitergehen soll. Bitte schauen Sie sich einen Teil des dafür verwendeten Skripts an.Ersetzen letzten Char (String) mit Regex oder DOMDocument
Script:
public function links($path) {
$old_url = 'http://test.dev/';
$dir_handle = opendir($path);
while($item = readdir($dir_handle)) {
$new_path = $path."/".$item;
if(is_dir($new_path) && $item != '.' && $item != '..') {
$this->links($new_path);
}
// it is a file
else{
if($item != '.' && $item != '..')
{
$new_url = '';
$depth_count = 1;
$folder_depth = substr_count($new_path, '/');
while($depth_count < $folder_depth){
$new_url .= '../';
$depth_count++;
}
$file_contents = file_get_contents($new_path);
$doc = new DOMDocument;
@$doc->loadHTML($file_contents);
foreach ($doc->getElementsByTagName('a') as $link) {
if (substr($link, -1) == "/"){
$link->setAttribute('href', $link->getAttribute('href').'/index.html');
}
}
$doc->saveHTML();
$file_contents = str_replace($old_url,$new_url,$file_contents);
file_put_contents($new_path,$file_contents);
}
}
}
}
Wie Sie sehen können habe ich innerhalb while loop
fügte hinzu, dass DOMDocument
aber es funktioniert nicht. Was ich versuche, hier zu erreichen, ist für jeden Link am Ende index.html hinzuzufügen, wenn das letzte Zeichen in diesem Link ist/
Was mache ich falsch?
Vielen Dank.
Nicht sicher, was Sie falsch machen, aber woher kommt der '$ html', den Sie versuchen zu laden? Es ist nicht in Ihrer Schleife oder Funktion. – Jan
Sie hatten Recht, ich habe Code bearbeitet, aber es funktioniert immer noch nicht. – Morpheus