в регулярном указаны только допустимые символы,например на мэил латиница собака и точка,лучше на тэги проверить еще да?
Ну если ты в регулярном укажешь только разрешённые символы, то ненадо....хотя я бы сделал фильтрацию на всякий случай....мало ли что ))
Ну пиши, в чём проблема? Тема называется " PHP: Новичкам: задаем вопросы" а не "[php] Халявщикам: пишем переводчики" ;) Мой те совет юзай promt.ru или другой веб переводчик, посылай туда свой запрос, результат выводи на сайте (работа с сокетами), нарушение авторских прав и т.д. но это токо совет, решать тебе :)
Где ошибка в коде?: PHP: <?php $n=0; $hash_code=""; $hash="30313233343536373839404142434445"; do { $code='0x'.$hash[$n].$hash[$n+1]; $hash_code.=chr($code); echo $n."<br>"; echo $code."<br>"; echo chr($code)."<br>"; echo $hash_code."<br>"; $n++; } while ($n++<31) ?> Вообщем в переменной $hash_code должен оказаться массив из 8 символов, код которых в "шестнадцатиричном" виде записан в переменной $hash (попарно, т.е 0x30,0x31,0x32,0x33 и т.д.) Вообщем почему-то chr($code) выдаёт пустой результат, хотя вроде как тип в шестнацатиричное целое должен автоматом должен преобразовываться при использовании в качестве значения функции chr ЗЫ Подозреваю что дело в кавычках...
Кароче аргументом может быть только десятичное целое? И так я нечего не увижу? $a='0x32'; echo chr($a); Как быть тогда?
вот выдрал функцию перевода хекс в акси function hex2asc($str) { $str = str_replace(" ", "", $str); for ($n=0; $n<strlen($str); $n+=2) { $newstring .= pack("C", hexdec(substr($str, $n, 2))); } return $newstring; } чтоб от кавычек избавится делай hexdec()
итого PHP: <?php $n=0; $hash_code=""; $hash="30313233343536373839404142434445"; do { $code='0x'.$hash[$n].$hash[$n+1]; $hash_code.=chr(hexdec($code)); echo $n."<br>"; echo $code."<br>"; echo chr(hexdec($code))."<br>"; echo $hash_code."<br>"; $n++; } while ($n++<31) ?>
НЕТ, так. PHP: <?php $n=0; $hash_code=""; $hash="30313233343536373839404142434445"; do { $code=$hash[$n].$hash[$n+1]; $hash_code.=chr($code); //echo $n."<br>"; //echo $code."<br>"; echo chr($code)."<br>"; //echo $hash_code."<br>"; $n++; } while ($n++<31) ?>
ИЛИ, еще лучше, так. PHP: <?php $n=0; $hash_code=""; $hash="30313233343536373839404142434445"; for($n=0;$n<strlen($hash);$n+=2) { $code=substr($hash,$n,2); $hash_code.=chr($code); //echo $n."<br>"; //echo $code."<br>"; echo chr($code)."<br>"; //echo $hash_code."<br>"; } ?>
теперь мд5 хэши в таблице мускула займут не 32 байта на поле, а всего 16 (что в два раза меньше), кроме того поиск будет осуществляться быстрее...
Я все проверил, мой код прелестно работает. А функция chr возвращает ascii код hex значения Вот ловите PHP: <? function hex2string($hex) { $decoded=''; for($i=0;$i<strlen($hex);$i+=2) { $decoded.=chr(substr($hex,$i,2)); } return $decoded;} echo(hex2string('3332353637383940')); ?>
Если в базе только проверенные данные: PHP: echo preg_replace('/(\d{2})/e', 'chr(\1)', '3332353637383940');
Ты не прав ибо HEX подразумевает цифры и буквы от a до f Однако, мысль отличная. PHP: <? $str='3334353637383940'; echo(preg_replace('/([\da-f]{2})/ie', 'chr(\1);',$str)); ?> ЗЫ что-то я сегодня плохо соображаю