8 Feb 2019 07:21:51 +0100 skrev Kurt Hansen <
ku...@invalid.dk>:
> > Sig til hvis du skal sparkes i gang med resten :)
>
> Det ville jeg ikke selv have spurgt/bedt om, men når du nu selv tilbyder
> det, så siger jeg da tak :-)
Når Martin Larsen har lavet det svære, er resten vel til at overse.
Hvis du udfylder $tabel, $felt og $forbindelse korrekt, kan dette lave
en tabel "nytabel" med rettet indhold af den originale.
Kommer der ingen fejl - formentlig timeout - vil der stå
"Tabellen er fremstillet." herefter kan den omdøbes til originalt navn.
<?php
$tabel='products_description';
$felt='products_description';
$forbindelse = mysqli_connect("server", "login", "password", "database") or die ("Der er ged i dine login oplysninger.");
$x = mysqli_query($forbindelse,"CREATE TABLE nytabel LIKE `$tabel`") or die ("nytabel findes eller $tabel findes ikke");
$x = mysqli_query($forbindelse,"INSERT nytabel SELECT * FROM `$tabel`") or die ("Dur ikke 1");
$x = mysqli_query($forbindelse,"SELECT `$felt` FROM nytabel") or die ("Dur ikke 2");
while ($t = mysqli_fetch_array($x)) {
$gammel=$t["$felt"];
$ny = preg_replace_callback('%<a [^>]*href\s*=\s*(["\'])(.*?)\1[^>]*>%i', "callback", $gammel);
$ny = preg_replace_callback('%<img [^>]*src\s*=\s*(["\'])(.*?)\1[^>]*>%i', "callback", $ny);
if ($gammel!==$ny) {
$gammel = mysqli_real_escape_string($forbindelse, $gammel);
$ny = mysqli_real_escape_string($forbindelse, $ny);
$y=mysqli_query($forbindelse,"UPDATE nytabel SET `$felt` = '$ny' WHERE `$felt` = '$gammel'") or die ("Dur ikke 3");
}
}
echo 'Tabellen er fremstillet. <br>
Ser det rigtigt ud, så skriv <br>
RENAME '.$tabel.' TO '.$tabel.'_backup; <br>
RENAME nytabel TO '.$tabel.';';
function callback($match) {
$tag = $match[0];
$url = $match[2];
if(strpos($url, " ") === false) {
return $tag; // gør intet hvis der ikke er mellemrum i url
}
$newurl = str_replace(" ", "%20", $url);
$newtag = str_replace($url, $newurl, $tag);
return $newtag;
}
?>