Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

26.08.2009, 17:46
|
|
Познающий
Регистрация: 24.04.2007
Сообщений: 92
Провел на форуме: 2621544
Репутация:
412
|
|
Сообщение от 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);
}
?>
|
|
|

26.08.2009, 17:47
|
|
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме: 4532332
Репутация:
1196
|
|
Сообщение от 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 массив?ты её перед этим explod'ил?
htmlspecialchars — Преобразует специальные символы в HTML сущности
и по моему в данном примере её будет рациональней использовать
Последний раз редактировалось L I G A; 26.08.2009 в 17:54..
|
|
|

26.08.2009, 17:54
|
|
Познающий
Регистрация: 24.04.2007
Сообщений: 92
Провел на форуме: 2621544
Репутация:
412
|
|
Сообщение от L I G A
круто! ,у тебя выйдет в слове ОМГ
3 спецсимвола.
откуда ты взял что $stroka массив?
htmlspecialchars — Преобразует специальные символы в HTML сущности
и по моему в данном примере её будет рациональней использовать
Эм можно в рег и русские буквы добавить....
А №%:?*' htmlspecialchars пропустит
Насчёт массива возможно я не прав,я не кодер.
По привычке представляю себе строку как массив char...
Последний раз редактировалось S00pY; 26.08.2009 в 17:59..
|
|
|

26.08.2009, 18:10
|
|
Banned
Регистрация: 14.01.2009
Сообщений: 515
Провел на форуме: 1996429
Репутация:
468
|
|
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}
|
|
|

26.08.2009, 18:16
|
|
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..
|
|
|

26.08.2009, 18:17
|
|
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме: 4532332
Репутация:
1196
|
|
Сообщение от 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..
|
|
|

26.08.2009, 18:23
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Вот мой вариант этой задачки:
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..
|
|
|

26.08.2009, 18:51
|
|
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 раз быстрее)
|
|
|

26.08.2009, 19:21
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Задание 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
|
|
|

26.08.2009, 19:37
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Задание 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
)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|