Алексей С.
115 сообщений
#15 лет назад
Я верстальщик, задача добавится валидности.

90% ошибок из-за & в ссылках...Поидее это ведь не проблемы верстальщика...что двиг выдает неправильные ссылки?
Алексей С.
115 сообщений
#15 лет назад
ob_start();
//Content....
echo preg_replace('/&(?!amp;|quot;|nbsp;|gt;|lt;|laquo;|raquo;|copy;|reg;|bul;|rsquo;)/', '&', ob_get_clean());


- Минус 120 ошибок и предупреждений валидатора
Фрилансер У.
248 сообщений
#15 лет назад
preg_replace('/&(?!(?:#\d++|++);)/ui', '&', $url);

Вот такую штуку использую, выдрал из Коханы 2.3.4
Андрей К.
1172 сообщения
#15 лет назад
Цитата ("trueW3C"):
- Минус 120 ошибок и предупреждений валидатора

Плюс 120% используемой оперативки и нагрузки процессора.

Цитата ("trueW3C"):
Поидее это ведь не проблемы верстальщика...что двиг выдает неправильные ссылки?

Это проблемы невалидных кодеров.
Антон Е.
279 сообщений
#15 лет назад
А какой движок делает таким код?
Алексей С.
115 сообщений
#15 лет назад
Цитата ("_VersouL_"):
А какой движок делает таким код?

WP и куча примочек к нему...я не разбирался...тут скорей примочки виноваты.

Цитата ("Lisio"):
Плюс 120% используемой оперативки и нагрузки процессора.

Там и так скрипт интерпретируется пол секунды...это сильно не навредит Это вообще не мои проблемы по сути.

preg_replace('/&(?!(?:#\d++|++);)/ui', '&', $url);

werewolf, спасибо!
Виталий И.
570 сообщений
#15 лет назад
Парни, подскажите чайнику, куда этот код вставлять, чтобы валидатор на & не ругался?
Алексей С.
115 сообщений
#15 лет назад
В index.php в самом начале, после <?php
ob_start();


В самом конце...
echo preg_replace('/&(?!(?:#\d++|++);)/ui', '&amp;', ob_get_clean());
Виталий И.
570 сообщений
#15 лет назад
trueW3C, Благодарю!
Андрей К.
1172 сообщения
#15 лет назад
Vitaflax, но не забывайте про память, если она критична. При высокой нагрузке может иметь побочный эффект.
Алексей С.
115 сообщений
#15 лет назад
Lisio, я когда сайты пишу использую инструменты Yii для ссылок...нечто вроде такого...
<a href="<?php echo $this->createUrl('posts/view', array('id' => 10)); ?>">Подробней</a>

И таких проблем не возникает...

Причем в Yii я легко могу менять вид полученной ссылки не меняя код...
Серафима Л.
10571 сообщение
#15 лет назад
werewolf, Интересно, а как сделать так, чтоб вообще валидатор не проверял ничего Потому как порой он придирается к пустякам типа <br> -это портит картину работающего проекта или ругается на разные модули сторонние
У Артемия вроде видела что-то при проверке написано было, вместо проверки
Фрилансер У.
248 сообщений
#15 лет назад
AlexsimA, указывайте

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

(если не используются устаревшие теги <font> <b>, etc)
или

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

перед <html>.
Он перестанет ругаться на &, <br> и незакрытые одиночные теги.
Серафима Л.
10571 сообщение
#15 лет назад
werewolf, Спасибо
Серафима Л.
10571 сообщение
#15 лет назад
werewolf, А если на сайте такое написано -Joomla

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Константин Ищенко
105 сообщений
#15 лет назад
Код, генерируемый кучей модулей Joomla от разных авторов, будет трудно привести к валидному XHTML 1.0 Transitional
И вообще к чему-то валидному)
Серафима Л.
10571 сообщение
#15 лет назад
2frags, Вот -вот и я про то-поэтому закрыла на это глаза.Мне самое главное, чтоб все хорошо работала и было одинаково во всех браузерах.
Никита К.
1594 сообщения
#15 лет назад
Определите DTD как HTML 4.01
Кирил Л.
138 сообщений
#15 лет назад
Насколько я понял гугл и яндекс тоже невалинды и как бы им пофиг на этот валидатор.
Вадим Т.
3240 сообщений
#15 лет назад
Цитата ("trueW3C"):
ob_start();
//Content....
echo preg_replace('/&(?!amp;|quot;|nbsp;|gt;|lt;|laquo;|raquo;|copy;|reg;|bul;|rsquo;)/', '&amp;', ob_get_clean());

- Минус 120 ошибок и предупреждений валидатора

Так нельзя делать категорически.
Так как &amp; &quot; и остальные специальные элементы, которые в Вашем коде перечислены, представляют собой далеко не полный список того, что может быть.
А если, например, встретится &euro; во что Ваш код его превратит?
Пожалуйста смотрите спеку, что еще возможно:
Даже не учитывая, что в XML можно свои энтити создавать... (хотя если Вы только лишь HTML выводите, и никакого X*, то это не критично).

Но в любом случае, такое решение, даже если перечислите все-все варианты согласно спецификации HTML, весьма и весьма неэффективно.
Вместо этого используйте специальное преобразование для ссылок, если они встречаются, и только для них, а не для всего выводимого пользователю текста.