PHP и с чем его едят....

Тагрим

Поняшка
Не подскажите как правильно исключить с поля ввода данных русские символы? Для кодировки cp1251 использовал preg_match(), но в utf-8 это не работает:
PHP:
if( preg_match( "/[\|0-9А-Яа-яЁё\|`\|_\||\'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\{\+]/", $login ) ) $stop .= $lang['login_error'];


Сам при работе над францией столкнулся с мультибайтами :)
 

Жах

хм..
может правда слабо искал но всё же..

как можно сравнить два массива на похожесть (не на соответствие а на похожесть!)

к примеру 1234 и 85123454 и вернуть true либо 1234

или польз и пользователи?

зы: приветствуеться оптимальность ато массивы оочень большие, 1000+ значений в каждом ;)
 

Пух

كنت بلهاء
Модератор
может правда слабо искал но всё же..

как можно сравнить два массива на похожесть (не на соответствие а на похожесть!)

к примеру 1234 и 85123454 и вернуть true либо 1234

или польз и пользователи?

зы: приветствуеться оптимальность ато массивы оочень большие, 1000+ значений в каждом ;)
поиск подмассива в массиве. Задача не сложная...
Как вариант (хотя не думаю что он хороший), можно представить массив в виде строки и найти вхождение строки в другую строку. Если такое вхождение есть - вернуть true, нет - false. В PHP явно должна быть функция, которая находит вхождение строки.
 

Жах

хм..
уже получилось)
именно так и сделал))

другой вопрос на сколько это будет эфективно если в массивах будет 1000+ элементов.. :?

код:

HTML:
<?
  
  $array1=array("компьют","биол","программ");
  $array2=array("суперкомпьютерные","программы","упрощают","жизнь","но","не","программистам");
  $c = count($array2);
  $b = count($array1);
  
  
  for ($i=0;$i<=$b; $i++){
   for ($j=0;$j<=$c; $j++){
     
     $pos = strpos($array2[$i], $array1[$j]);

     if ($pos === false) {} else 
     { $domain1=$array1[$j];
  
  echo "$domain1 \n";}
}
}
?>
 
Останнє редагування:

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Может быть я не в тему, но я б сделал такую штуку на perl, прирост скорости был катастрофический.
 

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Не подскажите как правильно исключить с поля ввода данных русские символы? Для кодировки cp1251 использовал preg_match(), но в utf-8 это не работает:
PHP:
if( preg_match( "/[\|0-9А-Яа-яЁё\|`\|_\||\'|\<|\>|\[|\]|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\{\+]/", $login ) ) $stop .= $lang['login_error'];
[A-Za-z]* как-то так. Регулярка доставляет).
Гораздо проще запрещать всё, что не разрешено, тогда не приходится писать огромных регулярок.
 
Останнє редагування:

PainKiller

Пастафарианец
Команда форуму
Супер Модератор
Ошиблись, наоборот всё что разрешено проще перечислить...
Я это и написал.
"Все что разрешено проще перечислить" => т.е. указать все, что разрешено => все что не разрешено - запрещено => ?????? => PROFIT!

А регулярку я привел для всего английского алфавита. По-моему если есть требование сделать так, чтоб допустимыми были только \w латиницы, проще перечислить их, а не запрещать все языковые наборы, вроде бы это логичнее)
 

[fly]

Sweet orange
Подскажите в чем ошибка. Я не программист, поэтому не критикуйте:) Собственно сам вопрос: почему не получается авторизоваться? Есть два файла: login.php и users.dat.

Пример login.php
<h3>ВХОД НА САЙТ</h3>

<form action="index.php?event=login" method="post">
<br />Name: <input name="name" type="text">
<br />Password: <input name="password" type="password">
<br /><input name="submit" type="submit" value="Login">
</form>

<?php // ФОРМА АВТОРИЗАЦИИ
if ($_GET[event]=="login") {
$name = trim($_POST['name']);
$password = trim($_POST['password']);

if (isset($name) AND isset($password)) {
$data=file("users.dat");
for ($i=0; $i<count($data); $i++) {
$dat=explode("|", $data[$i]);
if ($name==$dat[0] && $password==$dat[3]) { echo "ВЫ АВТОРИЗОВАНЫ"; exit;}
else { echo "Вход невозможен. Проверте верно ли введены данные."; exit;}
}
}
}
?>
и соответственно сам users.dat:
<?die;?>
Стас|Рудыка|fly1943@mail.ru|123456
Сергей|Зайцев|zayaz_85@mail.ru|0665475896
 
Останнє редагування:
Зверху