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

Форум Регулярные Выражения

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

 

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

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

тема: htmlspecialchars
 
 автор: dim   (11.09.2005 в 20:35)   письмо автору
 
 

...'а вот как можно написать ф-ию, к-ая будет практически полным аналогом ф-ии htmlspecialchars':
выражение '<script[^>]*?>.*?'si фактически удаляется (заменяется на '')
$search = array ("'<script[^>]*?>.*?'si",
"'<[\/\!]*?[^<>]*?>'si",
"'([\r\n])[\s]+'",
...
"'&#(\d+);'e");
$replace = array ("",
"",
"\\1",
...
"chr(\\1)");
$text = preg_replace ($search, $replace, $document);
return $text;
}
можете объяснить, почему идет именно такая замена в первых трех элементах массива (смысл)?

   
 
 автор: cheops   (11.09.2005 в 22:12)   письмо автору
 
   для: dim   (11.09.2005 в 20:35)
 

1) В первом случае удаляются скрипты
2) Во втором случае преобразуются HTML-комментарии.
3) В третьем зачем-то уничтожаются переводы строк

PS Вопросы, посвящённые регулярным выражениям, лучше сразу размещать в форуме "Регулярные выражения" http://www.softtime.ru/forum/index.php?id_forum=6

   
 
 автор: dim   (13.09.2005 в 13:28)   письмо автору
 
   для: cheops   (11.09.2005 в 22:12)
 

Что такое si ?
>1)
почему идет замена <script[^>]*?>.*?, а не <script[^>]*?>, ведь в первом случае ищется <script[^>], потом пропускается любое к-во символов, не яв-ся >, потом символ >, а потом зачем-то все оставшиеся символы. зачем?
>2) Во втором случае преобразуются HTML-комментарии.
почему помимо символа(ов) / пропускается и символ ! (для каких тегов это надо?)
такое ощущение, что теги эти удаляются (заменяются на '')
>3)
([\r\n]) заменяются на \\1 (все время на одно и то же \\1?), а любое к-во \s удаляется? так?

   
 
 автор: cheops   (13.09.2005 в 14:10)   письмо автору
 
   для: dim   (13.09.2005 в 13:28)
 

>Что такое si?
Это модификаторы
s - Если данный модификатор используется, метасимвол "точка" в шаблоне соответствует всем символам, включая перевод строк. Без него - всем, за исключением переводов строк. Этот модификатор эквивалентен записи /s в Perl. Класс символов, построенный на отрицании, например [^a], всегда соответствует переводу строки, независимо от наличия этого модификатора.

i - Если этот модификатор используется, символы в шаблоне соответствуют символам как верхнего, так и нижнего регистра.

Вот тема, посвящённая модификаторам http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7298

>почему идет замена <script[^>]*?>.*?, а не <script[^>]*?>,
1) Последовательность *? - имеет специальное значение, она управляет "жадностью". Подробнее можно почитать в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=6&id_theme=7118

>почему помимо символа(ов) / пропускается и символ ! (для каких тегов это надо?)
2) Это судя по всему, что-то связанное с HTML-комметариями <!--, но я если честно тоже не очень понял...

>([\r\n]) заменяются на \\1 (все время на одно и то же \\1?), а любое к-во \s
>удаляется? так?
3) Да в пустых строках чистятся лишние конечные пробелы.

   
Rambler's Top100
вверх

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