Как автоматически заменить все специальные символы на HTML-эквиваленты? - PullRequest
1 голос
/ 02 августа 2010

У меня есть HTML-документ, который содержит сотни специальных символов (таких как тире, умные апострофы, ударное гравирование и т. Д.), Которые я хотел бы преобразовать в их HTML-эквиваленты.

Напримермой документ содержит "em dash" (-), который я хотел бы преобразовать в:

 —

Конечно, мой HTML-документ содержит HTML-теги.Я не хочу преобразовывать части тегов html (например, «<» или «>») в эквиваленты html.

Существует ли какой-либо инструмент (php-скрипт, веб-приложение, приложение для ПК и т. Д.)) где я могу загрузить свой HTML-документ, и тот же документ возвращается, но модифицируется, чтобы включать HTML-эквиваленты по мере необходимости?

У меня много документов со многими специальными символами.Я хотел бы избежать использования «найти и заменить» (для каждого специального символа) в качестве решения ... это заняло бы слишком много времени.

Ответы [ 3 ]

1 голос
/ 03 августа 2010

вы можете использовать что-то вроде:

<?php
ob_start();
include 'test.html';
$content = ob_get_contents();
ob_clean();
$new = str_replace('<','$start$',$content);
$new = str_replace('>','$end$',$new);
$new = htmlentities($new);
$new = str_replace('$start$','<',$new);
$new = str_replace('$end$','>',$new);
echo $new;
ob_end_flush();
?>

, затем просто измените test.html на любой файл, который вы хотите удалить специальными символами

редактировать: это то же самое, что просто автоматизировано для каждого html-файла в одной и той же директории:

<?php
foreach(glob('*.html') as $file){
ob_start();
include $file;
$content = ob_get_contents();
ob_clean();
$new = str_replace('<','$start$',$content);
$new = str_replace('>','$end$',$new);
$new = htmlentities($new);
$new = str_replace('$start$','<',$new);
$new = str_replace('$end$','>',$new);
$file = fopen($file,'w');
fwrite($file,$new);
fclose($file);
}
echo 'done';
ob_end_flush();
?>
1 голос
/ 10 августа 2010
$new = str_replace(array('&lt;', '&gt;'), array('<', '>'), htmlentities($old));
0 голосов
/ 02 августа 2010

Если вы все еще хотите сделать это:

Создайте список специальных символов с соответствующим кодом:

например:

$htmlNumbers = array( "0" => array( "char"=>"—", "code"=>"&#8212" ),
                      "1" => array( "char"=>"@", "code"=>"&#64" ),
                      ---------------------
                      --------------------- 
                    );

Теперь получите html-контент из html-файлов и замените все символы на их коды, используя str_replace:

$html = file_get_contents("index.html");

for( $i=0; $i<count( $htmlNumbers ); $i++ ) {                    
    $html = str_replace( $htmlNumbers[$i]['char'] , $htmlNumbers[$i]['code'], $html );
}

echo $html;

Теперь вы можете сохранить вывод в html-файл, используя методы обработки файлов.

...