Нов ред в PHP

gLaVoReZa

Registered
Хора, значи правя една тема за WordPress и нали написал съм XHTML кода на страницата така:

PHP:
<?php echo( '<?xml version="1.0" encoding="' . get_bloginfo( 'charset' ) . '"?>
' ); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html <?php language_attributes('xhtml'); ?> xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=<?php bloginfo( 'charset' ); ?>" />
<meta http-equiv="content-language" content="<?php bloginfo( 'language' ); ?>" />

След като WordPress го обработи, връща това:

HTML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html dir="ltr" lang="bg-BG" xml:lang="bg-BG" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<meta http-equiv="content-language" content="bg-BG" />

И като го проверя, чрез валидатора ми излиза, че е невалидно, защото "XML declaration allowed only at the start of the document". Тоест декларацията на първия ред трябва да е разделена с нова линия от doctype и явно PHP връща някакъв странен нов ред, който валидатора не го брои за такъв, защото когато ръчно изтрия новия ред между xml декларацията от първия ред и doctype от втория, и си напиша мой си нов ред, става валидно... А, пък като сложа \n в PHP не прави нова линия, а си го връща буквално.

Я, дайте някакъв акъл от какво може да е предизвикано това, че много ме дразни.

Промяна:

Хм, сега като копирах върнатия source код и го поставих в Notepad се оказа, че над xml декларацията има някакъв празен ред... а аз не съм го написал в PHP кода. :idea:
 
Попринцип зависи в какви кавички е \n, но най-добре ползвай PHP_EOL, вместо \n.

Можеш да сложиш буфер, който да премества newline в <br />
http://codepad.viper-7.com/iEdbHa
 
Ама, не, не. То проблемът се оказа, че е в празната линия, която връща в началото на документа, и която не знам от какъв зор е там, при положение, че аз не съм я написал в PHP кода.

Преди това:
PHP:
<?xml version="1.0" encoding="UTF-8"?>
Има един празен ред, който идва незнайно откъде (в PHP скрипта го няма). Как да го премахна, с ob_start ли, с какво?
 
Провери си кода преди HTML-а, някъде да има include файлове или да се изпълнява функция, която трябва да връща нещо, но връща само нов ред.
 
Мамка му, то това идва някъде от PHP файловете на самия WordPress. Как може да са толкова немарливи бе, да ги *** у тъпанарите. То това няма оправия.
 

Back
Горе