2010-08-02 3 views
1

У меня есть html-документ, содержащий сотни специальных расширений (например, em dashes, smart apostrophes, accent egrave и т. Д.), Которые я хотел бы преобразовать в их html-эквиваленты.Как автоматически заменить все специальные символы эквивалентами HTML?

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

— 

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

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

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

+5

Как правильно установить кодировку и оставить символы такими, какие они есть? – Joey

+1

Йоханнес прав. Объекты HTML не должны быть необходимы, если кодировка установлена ​​правильно. – Artefacto

ответ

0

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

Create a list of special chars with their respective code:

, например:

$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-файле, используя методы обработки файлов.

+0

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

1

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

<?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
$new = str_replace(array('&lt;', '&gt;'), array('<', '>'), htmlentities($old));