Php как да премахнете родено в WordPress

Един от проблемите на използването на UTF-8 кодиране - етикет BOM. Този етикет е необходимо да се отдели от UTF други. Кодирания, но в случай на UTF-8, това може да доведе до някои проблеми, така че е по-добре да се откаже от код BOM. Как да го направя?

Php как да премахнете родено в WordPress

Изтриване на BOM в Notepad ++

Php как да премахнете родено в WordPress

Изтриване на BOM PHP средства

Когато има много файлове, за да ги събере с лопата в Notepad ++ за дълго време. Просто използвайте PHP-скрипт рекурсивни обработка на папки и файлове, за да отстраните знака за отпечатване BOM. Аз го разделя на три функции:

1. file_has_boom функция ($ името на файла) - проверява BOM марки във файла $ името на файла на.

функция file_has_bom ($ име) $ FH = fopen ($ име, "R");
ако ($ FH === невярно) върне невярна;
$ Ул = fread ($ FH, 3);
fclose ($ FH);
възвръщаемост ($ ул == пакет ( "CCC", 0xef, 0xbb, 0xbf));
>

Тя чете първите 3 байта на файла $ името на файла и ги сравнява със стойността на BOM на етикета. Ако има едно - връща TRUE. в противен случай - FALSE.

2. file_remove_bom функция ($ името на файла) - изтрива първите 3 байта (под етикета BOM) във файла.

функция file_remove_bom ($ име) ул $ = file_get_contents ($ име);
ако ($ ул === невярно) върне невярна;
Ул $ = SUBSTR върху ($ ул, 3);
върнете file_put_contents ($ името на файла, ул $);
>

Ако отворите или презапишете файла се провали, функцията ще върне FALSE. в противен случай &mdah; броят на записаните байтове (не е вярно).

3. Функция dir_remove_bom ($ реж) - прави рекурсивни обработката на папки и файлове, проверка на файловете за етикети BOM и отстраняването му от тях.

функция dir_remove_bom ($ реж) $ DH = opendir ($ реж);
ако ($ DH === невярно) умрат ($ реж. - ГРЕШКА DIR');
докато (! ($ файл = readdir ($ DH)) == невярно) ако ($ файл == или $ подаде == '..' ''.) продължават;
$ Име = $ реж. "/". $ Файла;
ако (is_dir ($ име)) dir_remove_bom ($ име);
> ElseIf (is_file ($ име)) ако (file_has_bom ($ име)! == невярно) ехо $ името на файла. " - ". ((File_remove_bom ($ име)! == невярно).ПРЕМАХВАНЕ BOM". "файлова грешка"). "
";
>
>
>
closedir ($ DH);
>

Забележка: Тази функция показва списък с файлове, които са имали BOM марка и е резултат от усилията си за премахване.

Там може да се използва и глоби (функция). но аз научих за него едва когато започнах да се занимава с това как да изтриете файл в PHP - Уви.

Премахване на BOM на файловете на WordPress

Какво прави WordPress? Фактът, че WordPress използва UTF-8 кодиране, и предложи на PHP-скрипт е написана за него.

В интернет има решение от жури Belotitskogo. но намира само проблемните файлове, и не го премахнете, BOM (това трябва да се извършва ръчно, като се използва същият Notepad ++).

От плюсове заслужава да се отбележи ограничение - филтри .php само файлове, той е прав и ускорява процеса. По мое решение не е, но не е добавил трудно:

ако (strstr ($ името на файла, ".php") === невярно) продължи;

Добавете този код, преди да проверите наличието на марката във файла BOM, т.е. линията ..:

ако (file_has_bom ($ име)! == невярно)

Ами t.-k. по-голямата част от проблема е свързан с шаблони, достатъчно е да се провери ./wp-content/themes/ на папката - с PHP-скрипт трябва да се намира в главната директория на блога и обработка на разговора ще бъде:

В допълнение, можете да посочите местоположението на самата тема, което допълнително стеснява обхвата на обработените файлове.

BOM и резултати

Решения на проблема са много. Бъдещето на UTF-кодировки! Но докато има трудности с UTF, че се признава, че за кодиране Windows-1251 (ANSI) прилича много за предпочитане.

Послепис Аз не съм отговорен за последствията от използването на по-горе PHP-скрипт за премахване на BOM.

Благодаря ви, че двамата отишли ​​до PhpStorm вече забравил какво BOM. И това, което е вече забравено opendir след появата в PHP SPL и файлови итератори.

За PHP SPL, не мисля, че яйцето в профил изглежда като нещо друго. Аз използвам това, което аз бях запознат, но аз съм съгласен - това е необходимо, за да се справи с иновации. ако има желание :-)

Специалист уеб # 8209; дизайнер, разработчик, оптимизатор, копирайтър, блогър и просто добър човек.