|
|
|
| ...'а вот как можно написать ф-ию, к-ая будет практически полным аналогом ф-ии 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;
}
можете объяснить, почему идет именно такая замена в первых трех элементах массива (смысл)? | |
|
|
|
|
|
|
|
для: dim
(11.09.2005 в 20:35)
| | 1) В первом случае удаляются скрипты
2) Во втором случае преобразуются HTML-комментарии.
3) В третьем зачем-то уничтожаются переводы строк
PS Вопросы, посвящённые регулярным выражениям, лучше сразу размещать в форуме "Регулярные выражения" http://www.softtime.ru/forum/index.php?id_forum=6 | |
|
|
|
|
|
|
|
для: cheops
(11.09.2005 в 22:12)
| | Что такое si ?
>1)
почему идет замена <script[^>]*?>.*?, а не <script[^>]*?>, ведь в первом случае ищется <script[^>], потом пропускается любое к-во символов, не яв-ся >, потом символ >, а потом зачем-то все оставшиеся символы. зачем?
>2) Во втором случае преобразуются HTML-комментарии.
почему помимо символа(ов) / пропускается и символ ! (для каких тегов это надо?)
такое ощущение, что теги эти удаляются (заменяются на '')
>3)
([\r\n]) заменяются на \\1 (все время на одно и то же \\1?), а любое к-во \s удаляется? так? | |
|
|
|
|
|
|
|
для: 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) Да в пустых строках чистятся лишние конечные пробелы. | |
|
|
|