|
|
|
| Здравствуйте!
Извините не правильно назвал тему.
Есть выражение, оставил то что счел нужным:
$text = (string)(preg_replace("/[^\w\x21\x28\x29x\x2B\x2C\x2D\x2E\x3A\x3F\x40\x7F-\xFF\s]/", " ", $text));
|
Подскажите плз,
может можно сократить выражение и получить такой же результат.
(Я в рег.выражениях не особо силен) | |
|
|
|
|
|
|
|
для: Navigator
(16.08.2009 в 03:24)
| | Всмысле сделать \x2B-\x2E
?
а так если от пробела , и cp1251
<?php
header('Content-type:text/html; charset=cp1251');
?>
<style>
td {padding:2px 15px}
u {color:red}
</style>
<?
$re = "/[^\w\x21\x28\x29x\x2B\x2C\x2D\x2E\x3A\x3F\x40\x7F-\xFF\s]+/";
$str = '';
echo '<table style="font:bolder 1.5ex Lucida Console;">
<tr><td>';
for ($p = 32, $i = 0; $p < 256; $p++, $i++)
{
if( $i == 16 ) {
echo '</td><td>' . preg_replace($re, '<u>$0</u>', $str)
. "</td></tr><tr><td>\n";
$str = '';
$i = 0;
}
printf( "%2X ", $p);
$str .= chr($p);
}
echo '</td><td>' . preg_replace($re, '<u>$0</u>', $str)
. '</td></tr></table>' ."\n";
?>
|
//upd
тестил на opera
В IE7 половина букв отвалилась (из-за того что для него надо было указывать кодировку windows-1251 вместо cp1251) | |
|
|
|
|
|
|
|
для: heed
(16.08.2009 в 14:07)
| | Нет - - это мы оставим только + , - . | |
|
|
|
|
|
|
|
для: heed
(16.08.2009 в 14:07)
| | У меня вот из этого
~!@#$%^&*()_+|{}:"<>?[];',./
Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
q w e r t y u i op a s d f g h j k l z x c v b n m
`1234567890-=\
`123456*-=\qwerty-[]asdfgh+'zxcvbn,/
ёйцукенгшщзхъфывапролджэячсмитьбю.
ЙЦУКЕНГГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,
O O O O O OOOO W T L Ё ё
!"#$%&'()*+,-./@O¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶¸¼½¾¿Àäö˂˃ˊˋ͏΄☺☼♀♂˂<>˃<>
|
в форме получается (проверка -в mysql - из mysql) вот это в браузерах (в т.ч.IE 6.0):
!@ *() + : ? ,.
Q W E R T Y U I O P A S D F G H J K L Z X C V B N M
q w e r t y u i op a s d f g h j k l z x c v b n m
1234567890-=
123456*-= qwerty- asdfgh+ zxcvbn,
ёйцукенгшщзхъфывапролджэячсмитьбю.
ЙЦУКЕНГГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,
O O O O O OOOO W T L Ё ё
! ()*+,-. @O¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶¸¼½¾¿Àäö˂˃ˊˋ͏΄☺☼♀♂˂
|
Еще один вопросик - такой проверки для безопасности хватит или нет.
P.S. У меня все o в виде символов. | |
|
|
|
|
|
|
|
для: Navigator
(16.08.2009 в 03:24)
| | внутри тега <pre> тоже пропадает? | |
|
|
|
|
|
|
|
для: Trianon
(16.08.2009 в 14:14)
| | Это к сообщению heed или к названию темы?
Мне <pre> не помог никак. | |
|
|
|
|
|
|
|
для: Navigator
(17.08.2009 в 02:12)
| | было к Вам. Потом понял, что ошибся. | |
|
|
|
|
|
|
|
для: Navigator
(16.08.2009 в 03:24)
| | для безопастности нужно просто правильно обработать данные
mysql_escape_string заэкранирует всё опасное кроме % и _ если применяется LIKE для сравнения
и применение intval() обезопасит вставку туда где должны быть цифры.
В такой кодировке в поля типа TEXT db лезет всё , если только не сделать SET NAMES 'utf8'
перед вставкой.
привёл просто код чтобы увидеть какие конкретно символы (окрашивающиеся в красный) заменятся таким выражением
, даже не понимая для чего это может быть нужно
Но может есть другие причины , например вывод в браузер текста из db без обработки
чтобы небыло <>, или для чего-то ещё используются данные, я не знаю
в дальнейшем использовании могут составить проблему такие как \x00 символы
, но в db они вставляются.
возьмите только \x09\x0d\x0(\t\r\n)a из интервала до \x20(пробела)
, если не нужны \v(Вертикальное Таб) которые тоже входит в \s
, и если ненужны управляющие символы типа \x07(beep)
то что в \x7F-\xBF может слегка по разному отображаться в разных шрифтах
, но оно выводится нормально , если кодировка cp1251.
Для вывода в браузер сгодится и htmlspecialchars() , если content-type:text/html
// upd
только пригляделся
>8;³´µ¶¸¼½¾
в какой кодировке делаете страницу ? | |
|
|
|
|
|
|
|
для: heed
(16.08.2009 в 20:40)
| |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
при коннекте с db:
$mysql_connect = mysql_connect($dbhost, $dbusername, $dbpass);
mysql_query("SET NAMES 'utf8'");
|
Сначала использовал htmlspecialchars() и preg_replace с массивом всяких кавычек и слешей, но потом начитался в форумах, что рег.выр. работают быстрее и надежнее (если првильно их составить конечно).
Основная цель обезопасить доску объявлений от всяких исследователей - "а что будет если..."
Может подскажете : использовать или нет рег.выр. и если да то какое? | |
|
|
|