ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #111  
Старый 26.08.2009, 17:46
Аватар для S00pY
S00pY
Познающий
Регистрация: 24.04.2007
Сообщений: 92
Провел на форуме:
2621544

Репутация: 412
Отправить сообщение для S00pY с помощью ICQ
По умолчанию

Цитата:
Сообщение от Pashkela  
И у того и у другого ошибка - достаточно просто написать

$i<strlen($stroka)

счет длины начинается с единички
Спасибо,исправил.
PHP код:
<?php
function countspec($stroka){
$count=0
for(
$i=0;$i<strlen($stroka);$i++){ 
    if(!
preg_match("/[a-zA-Z0-9]/",$stroka[$i]))
    {
$count++;}}
Echo (
'Спец символов:'.$count);  
}
?>
 
Ответить с цитированием

  #112  
Старый 26.08.2009, 17:47
Аватар для L I G A
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме:
4532332

Репутация: 1196


Отправить сообщение для L I G A с помощью ICQ
По умолчанию

Цитата:
Сообщение от S00pY  
PHP код:
<?php
function countspec($stroka){
$count=0
for(
$i=0;$i<=strlen($stroka)-1;$i++){ 
    if(!
preg_match("/[a-zA-Z0-9]/",$stroka[$i]))
    {
$count++;}}
Echo (
'Спец символов:'.$count);  
}
?>
Как то так....
Не злись... я просто выразил своё мнение)
круто! ,у тебя выйдет в слове ОМГ
3 спецсимвола.
Цитата:
$stroka[$i]
откуда ты взял что $stroka массив?ты её перед этим explod'ил?

htmlspecialchars — Преобразует специальные символы в HTML сущности
и по моему в данном примере её будет рациональней использовать

Последний раз редактировалось L I G A; 26.08.2009 в 17:54..
 
Ответить с цитированием

  #113  
Старый 26.08.2009, 17:54
Аватар для S00pY
S00pY
Познающий
Регистрация: 24.04.2007
Сообщений: 92
Провел на форуме:
2621544

Репутация: 412
Отправить сообщение для S00pY с помощью ICQ
По умолчанию

Цитата:
Сообщение от L I G A  
круто! ,у тебя выйдет в слове ОМГ
3 спецсимвола.

откуда ты взял что $stroka массив?

htmlspecialchars — Преобразует специальные символы в HTML сущности
и по моему в данном примере её будет рациональней использовать
Эм можно в рег и русские буквы добавить....
А №%:?*' htmlspecialchars пропустит

Насчёт массива возможно я не прав,я не кодер.
По привычке представляю себе строку как массив char...

Последний раз редактировалось S00pY; 26.08.2009 в 17:59..
 
Ответить с цитированием

  #114  
Старый 26.08.2009, 18:10
Аватар для Krist_ALL
Krist_ALL
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме:
1996429

Репутация: 468


Отправить сообщение для Krist_ALL с помощью ICQ
По умолчанию

LIGA,
PHP код:
<?php 
function countspec($stroka){ 
$count=0;  
for(
$i=0;$i<=strlen($stroka)-1;$i++){  
    if(!
preg_match("/[a-zA-Z0-9]/",$stroka[$i])) 
    {
$count++;}} 
Echo (
'Спец символов:'.$count);   
}

?>
Надо вместо $stroka[$i] , ,$stroka{$i}
 
Ответить с цитированием

  #115  
Старый 26.08.2009, 18:16
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Цитата:
Надо вместо $stroka[$i] , ,$stroka{$i}
Можно и так и так. Пока что. В PHP6 можно только [$i].

Другое дело, что функция записывается проще:

PHP код:
<?php
function countspec($stroka)

  echo 
'Спецсимволов: '.preg_match_all('/[^a-zA-Z0-9]/',$stroka,$m);
}
?>
В регулярку добавьте символы, которые нужно.

Последний раз редактировалось d_x; 26.08.2009 в 18:38..
 
Ответить с цитированием

  #116  
Старый 26.08.2009, 18:17
Аватар для L I G A
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме:
4532332

Репутация: 1196


Отправить сообщение для L I G A с помощью ICQ
По умолчанию

Цитата:
Сообщение от Krist_ALL  
LIGA,
PHP код:
<?php 
function countspec($stroka){ 
$count=0;  
for(
$i=0;$i<=strlen($stroka)-1;$i++){  
    if(!
preg_match("/[a-zA-Z0-9]/",$stroka[$i])) 
    {
$count++;}} 
Echo (
'Спец символов:'.$count);   
}

?>
Надо вместо $stroka[$i] , ,$stroka{$i}
это код S00pY, в моем все впорядке.

Последний раз редактировалось L I G A; 26.08.2009 в 18:27..
 
Ответить с цитированием

  #117  
Старый 26.08.2009, 18:23
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Вот мой вариант этой задачки:

PHP код:
<?php 
function countspec($stroka) { 
   
$count=0;  
   for(
$i=0;$i<strlen($stroka);$i++) {  
       if(!
preg_match("#[\sa-zа-я0-9]#i",$stroka{$i})) $count++;
   } 
   Echo (
'Спец символов:'.$count);
}

countspec("Вася Пушкин Loloman !@#$%^&*()-+№");
?>
Пробел не спец символ по идее, его просто надо игнорировать, ну и большие буквы если просто модификатор i ставим и всё

Но это опять же не учитывая возможных кириллических кодировок и прочих уникодов

PS: Но самый красивый вариан конечно у d_x двумя постами выше, но с моей регуляркой + его ^ в начале, т.е. так:

PHP код:
<?php 
function countspec($stroka
{  
  echo 
'Спецсимволов: '.preg_match_all('/[^\sa-zа-я0-9]/i',$stroka,$m); 


countspec("Вася Пушкин Loloman !@#$%^&*()-+№");
?>

Последний раз редактировалось Pashkela; 26.08.2009 в 18:45..
 
Ответить с цитированием

  #118  
Старый 26.08.2009, 18:51
Аватар для d_x
d_x
Reservists Of Antichat - Level 6
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме:
4137635

Репутация: 2407


По умолчанию

Ради интереса сделал бенчмарк:
PHP код:
<?php  
set_time_limit
(0);

//моя функция
function countspec($stroka)

  return 
preg_match_all('/[^a-zA-Zа-яА-ЯёЁ0-9 ]/',$stroka,$m);
}

//функция Pashkela
function countspec2($stroka) {  
   
$count=0;   
   for(
$i=0;$i<strlen($stroka);$i++) {   
       if(!
preg_match("#[\sa-zа-я0-9]#i",$stroka{$i})) $count++; 
   }  

   return 
$count;



//для бенчмарка
function microtime_float()
{
    list(
$usec$sec) = explode(" "microtime());
    return ((float)
$usec + (float)$sec);
}


$m=microtime_float();

for(
$i=0;$i<500000;$i++)
{
  
countspec('вася пупкин !@#45 траляля');
}


$tm=microtime_float()-$m;

print 
'd_x: '.$tm.' sec<br>';



$m=microtime_float();

for(
$i=0;$i<500000;$i++)
{
  
countspec2('вася пупкин !@#45 траляля');
}


$tm=microtime_float()-$m;

print 
'Pashkela: '.$tm.' sec<br>';
?>
Результат:
Код:
d_x: 4.36448502541 sec
Pashkela: 33.2198770046 sec
Моя функция в 7.5 раз быстрее)
 
Ответить с цитированием

  #119  
Старый 26.08.2009, 19:21
Аватар для mailbrush
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Задание 024
PHP код:
<?php

     
function getmicrotime() #функция, засекающая время
     
{
         
$time explode(" "microtime());
         return (
$time[0] + $time[1]);
     }

     
$time['first']['start'] = getmicrotime(); #время начала первого цикла 

     
for ($i 0$i 10$i++)
     {
         echo 
'1php ';
     }

     
$time['first']['end'] = getmicrotime(); #время окончания первого цикла

     
$i 0;

     
$time['second']['start'] = getmicrotime(); #время начала второго цикла

     
while ($i 10)
     {
         echo 
'w1';
         
$i += 1;
     }

     
$time['second']['end'] = getmicrotime(); #время окончания второго цикла

     
$time['first']['difference'] = $time['first']['end'] - $time['first']['start']; #время работы первого цикла
     
$time['second']['difference'] = $time['second']['end'] - $time['second']['start']; #время работы второго цикла
     
$time['difference'] = $time['first']['difference'] - $time['second']['difference']; #разница во времени между циклами

     
echo '<br>Первый скрипт: ' $time['first']['difference'] .
         
'<br>Второй скрипт: ' $time['second']['difference'] .
         
'<br>Разница: ' $time['difference']; #выводим информацию

?>
Код:
Первый скрипт: 5.5074691772461E-5
Второй скрипт: 1.978874206543E-5
Разница: 3.5285949707031E-5
 
Ответить с цитированием

  #120  
Старый 26.08.2009, 19:37
Аватар для mailbrush
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме:
6075534

Репутация: 2731


Отправить сообщение для mailbrush с помощью ICQ
По умолчанию

Задание 030
В результате слияния
PHP код:
<?php 
$a 
= array('cat','dog','fox'); 
$b = array('Moscow','London'); 
$c = array('RED'); 
$d $b $a $c
?>
мы получим следующий результат
PHP код:
Array
(
    [
0] => Moscow
    
[1] => London
    
[2] => fox

Неожиданный результат, не правда ли? Скорее всего вы ожидали получить массив
PHP код:
Array
(
    [
0] => Moscow
    
[1] => London
    
[2] => cat
    
[3] => dog
    
[4] => fox
    
[5] => RED

Однако в PHP на этот счет свои правила. При слиятии массивов, в которых содержатся элементы с одинаковыми индексами (ключами), в результирующем массиве останется элемент первого массива. А в приведенном примере элементы массива b имели индексы - 0, 1; массива a - 0, 1, 2; массива c - 1. В итоге мы получили массив с тремя индексами:
PHP код:
Array
(
    [
0] => Moscow
    
[1] => London
    
[2] => fox

 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[php] On-Line Фейк mail.ru m0Hze E-Mail 37 13.01.2010 19:52
SQL-Inj Finder by mr.The [Special for antichat] [PHP] mr.The PHP, PERL, MySQL, JavaScript 24 07.08.2009 01:30
Задания ~Fenix~ Болталка 11 13.05.2006 11:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ