Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: UTF-8 и BOM
 
 автор: SilentChild   (01.09.2012 в 20:10)   письмо автору
35.1 Кб
 
 

Здравствуйте, участники форума!

Дано:
- Есть файл index.phtml.
- Есть файл main.phtml.
- Оба файла создавались и (даже) пересоздавались в кодировке UTF-8 без BOM (в программах phpDesigner и Notepad++).
- main.phtml подключается в index.phtml динамически.

На картинке, в приложенном файле, показан блок <div id="content"> файла index.phtml. В нём лежит блок <div class="main">, который подключился туда динамически из файла main.phtml.

Вопрос: откуда взялись символы, которые отмечены стрелочкой?

P.S.: При запуске сайта на локальном сервере в указанном на картинке месте добавляется пространство. При запуске сайта на хостинге пространство и символы не появляются. В чём может быть дело? Влияют ли на это настройки Apache?

  Ответить  
 
 автор: confirm   (01.09.2012 в 22:52)   письмо автору
 
   для: SilentChild   (01.09.2012 в 20:10)
 

Откуда оно появляется, вам сподручнее знать. А это юникод непрерывного пробела нулевой длины - ZERO WIDTH NO-BREAK SPACE (U+FEFF). В сети есть и код лечения таких файлов, когда-то сохранял его себе, вот он:
<?php
$HOME 
dirname(__FILE__);
$WIN 0//для локального хоста на Windows равно 1
$BOMBED = array();
RecursiveFolder($HOME);
echo 
'<p>Файлы из которых был убран BOM:</p>
foreach ($BOMBED as $utf) echo $utf ."<br />";

function RecursiveFolder($sHOME) {
  global $BOMBED, $WIN;
  $win32 = ($WIN == 1) ? "\\" : "/";
  $folder = dir($sHOME);
  $foundfolders = array();
  while ($file = $folder->read()) {
    if($file != "." and $file != "..") {
      if(filetype($sHOME . $win32 . $file) == "dir"){
        $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;
      } else {
        $content = file_get_contents($sHOME . $win32 . $file);
        $BOM = SearchBOM($content);
        if ($BOM) {
          $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
          $content = substr($content,3);
          file_put_contents($sHOME . $win32 . $file, $content);
        }
      }
    }
  }
  $folder->close();
  if(count($foundfolders) > 0) {
    foreach ($foundfolders as $folder) {
      RecursiveFolder($folder, $win32);
    }
  }
}

function SearchBOM($string) { 
    if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
    return false; 
}
?>
Запускать с корневой папки документов.

  Ответить  
 
 автор: SilentChild   (01.09.2012 в 23:33)   письмо автору
 
   для: confirm   (01.09.2012 в 22:52)
 

Благодарю Вас, всё "вылечилось"!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования