Il modo migliore per trovare caratteri non validi in un mazzo di ISO-889-1 pagine web?
-
16-09-2019 - |
Domanda
Ho un gruppo di file html di un sito che sono stati creati nel 2000 e sono stati mantenuti fino ad oggi. Abbiamo recentemente iniziato uno sforzo per sostituire i caratteri illegali con i loro entità HTML. Andando una pagina all'altra in cerca di simboli di copyright e di marchio tag sembra un bel lavoretto. Qualcuno di voi sa di un app che avrà un gruppo di file html e dimmi dove ho bisogno di sostituire i caratteri illegali con entità HTML?
Soluzione
Si potrebbe scrivere uno script PHP (se è possibile, in caso contrario, sarei felice di aiutare), ma suppongo che già convertito alcuni dei "caratteri speciali", in modo che non rendere il compito un po 'più difficile ( anche se io continuo a pensare che sia possibile) ...
Altri suggerimenti
Ogni buon editor di testo farà una ricerca di contenuti dei file per voi e restituiscono un elenco di partite.
Lo faccio con EditPlus . Ci sono diversi editor come Notepad ++ , TextPad , ecc che facilmente aiutare a fare questo.
Non è necessario aprire i file. Basta specificare un percorso in cui sono memorizzati i file e la maschera (* .html) e il contenuto per la ricerca per "©" e l'editor tornerà con una lista di partite e quando si fa doppio clic, si apre il file e ti porta la linea corrispondente.
Ho anche un sito web che ha bisogno di convertire regolarmente un gran numero di nomi di file avanti e indietro tra i set di caratteri. Mentre un editor di testo in grado di fare questo, una soluzione portatile utilizzando 2 passi in php è preferibile. In primo luogo, aggiungere i nomi di file a un array, quindi effettuare la ricerca e sostituzione. Un ulteriore pezzo di codice nella funzione esclude determinati tipi di file dalla matrice.
Function listdir($start_dir='.') {
$nonFilesArray=array('index.php','index.html','help.html'); //unallowed files & subfolders
$filesArray = array() ; // $filesArray holds new records and $full[$j] holds names
if (is_dir($start_dir)) {
$fh = opendir($start_dir);
while (($tmpFile = readdir($fh)) !== false) { // get each filename without its path
if (strcmp($tmpFile, '.')==0 || strcmp($tmpFile, '..')==0) continue; // skip . & ..
$filepath = $start_dir . '/' . $tmpFile; // name the relative path/to/file
if (is_dir($filepath)) // if path/to/file is a folder, recurse into it
$filesArray = array_merge($filesArray, listdir($filepath));
else // add $filepath to the end of the array
$test=1 ; foreach ($nonFilesArray as $nonfile) {
if ($tmpFile == $nonfile) { $test=0 ; break ; } }
if ( is_dir($filepath) ) { $test=0 ; }
if ($test==1 && pathinfo($tmpFile, PATHINFO_EXTENSION)=='html') {
$filepath = substr_replace($filepath, '', 0, 17) ; // strip initial part of $filepath
$filesArray[] = $filepath ; }
}
closedir($fh);
} else { $filesArray = false; } # no such folder
return $filesArray ;
}
$filesArray = listdir($targetdir); // call the function for this directory
$numNewFiles = count($filesArray) ; // get number of records
for ($i=0; $i<$numNewFiles; $i++) { // read the filenames and replace unwanted characters
$tmplnk = $linkpath .$filesArray[$i] ;
$outname = basename($filesArray[$i],".html") ; $outname = str_replace('-', ' ', $outname);
}