Резерв имен

SiMM

Новичок
Автор оригинала: DV
Вот нашел такую штучку, может ей лучше:
PHP:
function stringUpDown($text, $up = true){
Где такую траву брал? Не знал, что в русском алфавите всего 22 буквы.
Все говорят локаль, локаль, а где прочитать что это такое и с чем это кушают? ;)
Все спрашивают, спрашивают, а в мануал - не заглядывают, да и поиском не пользуются совершенно.
 

DV

Guest
Фанат
обычно в гостевых книгах ответы администраторов выделяются совсем другим цветом и вообще отдельно от простых сообщений.
и такие ухищрения вообще не нужны
А какие ухищрения? Вот есть гостевая книга (без авторизации), кто мне запретит в поле "Имя" написать "Фанат" и послать кого-нить на 3 буквы?

-~{}~ 24.07.04 17:34:

SiMM
Где такую траву брал? Не знал, что в русском алфавите всего 22 буквы.
http://ru.php.net/manual/ru/function.strtoupper.php
 

Фанат

oncle terrible
Команда форума
если это будет написано не красным шрифтом, то будет ясно, что это самозванец.
 

DV

Guest
Фанат
Так и будет, но на всякий пожарный надо сделать фильтр на имена. А может не все сообразительные и обидятся...а тем более что это радиостанция не маленького города. ;)
 

SiMM

Новичок
Никогда не думал, что русский язык имеет глубокие бразильские (Portuguese Brazilian) корни. А ведь там же есть нормальный пример от 26-Feb-2002 09:48 (на пост от 26-Feb-2002 09:59 внимание обращать не надо, и, думаю, правильнее будет продублировать в стрингах ещё и латиницу).
 

Фанат

oncle terrible
Команда форума
Если тебе нужен фильтр на имена, то забей на локаль, и сделай все руками.
массив соответствия символов
к примеру
'o'=>array('o','O','о','О','0'),

и так по всем буквам.
и прогонять каждую юукву по этим массивам, получая ключ и составляя изключей имя.
а в базе тоже иметь кроме самого имени, его результат прогона через жту функцию
и его исать.
примерно так
 

DV

Guest
Фанат
массив соответствия символов
к примеру
'o'=>array('o','O','о','О','0'),
и так по всем буквам.
А для несообразительных...:)
Слово перебираем по символам и если в слове будет вместо русской О будет латинская или цифра 0, то её заменить?

-~{}~ 24.07.04 18:51:

У нас с латиницей совпадает то всего 11 буквь - Е, А, Т, О, Р, Н, К, Х,С, B, M и один цифрь - 0.
 

DV

Guest
neko
ну и маленькие их еще меньше получится..;) - e, a, o, k, c,

-~{}~ 24.07.04 19:47:

IL78
вариант ф-ции для сравнения тех же строк, но без вложенного цикла:
PHP:
function check1($name1, $name2)
{
    $ar1 = explode(" ",strtolower($name1));
    $ar2 = explode(" ",strtolower($name2));
    sort($ar1);
    sort($ar2);
    return($ar1 == $ar2);
}
А как вместо $name1 вставить массив с зарезервированными именами?:rolleyes:
 

lucas

Guest
Ищем аналогии... :)

Первый символ -- кириллица (не обяз. в нижнем регистре), второй -- латиница, цифра и/или знак препин.

б -- 6
г -- r
з -- 3
и -- u
у -- y
ц -- u,
ч -- 4
ш -- uu
щ -- uu,
ы -- bI
ь -- b
я -- 9I

Вывод: больше играем в Counter-Strike... :D
 

neko

tеam neko
А может не все сообразительные и обидятся...а тем более что это радиостанция не маленького города
 

DV

Guest
;)

-~{}~ 24.07.04 20:25:

Ну как мне всё-таки вставить массив в функции выше? :)
 

IL78

Guest
вместо $name1 вставить массив с зарезервированными именами?
DV, ту ф-цию я ее привел просто как пример проверки строк на совпадения слов, она конечно не панацея от всех проблем.

Слушай Фаната - пиши ф-цию, котрая будет приводить имена к некоторому "стандартному" виду, а потом проверяй вхождение "стандартного вида" нового имени в массив "стандартных видов" зарезервированных имен.
 

DV

Guest
Автор оригинала: Igorek2003
А как насчет такой функции:
PHP:
<?php
$name1 = "иванов иван";
$name2 = "Иван иВанов";

function check($name1, $name2)
{
	$arr1 = explode(" ",$name1);
	$arr2 = explode(" ",$name2);

	if (count($arr1)!=count($arr2)) return false;
	
	foreach ($arr1 as $s1)
		{
			$f = false;
			foreach ($arr2 as $s2)
				{
					if (strtolower($s1)==strtolower($s2)) {$f=true;continue;}
				}
			if ($f==false) return false;
		}
	return true;
}
if (check($name1, $name2)) echo "Имена совпали";else echo "Имена различны";
?>
Ну как всё-таки name2 сделать массивом?
 

IL78

Guest
PHP:
function check_array($name1, $names_array)
{
   foreach ($names_array as $name2)
   {
       if (check($name1, $name2)) return true;
   }
   return false;
}
не пойдет?
Хотя так проверять - неудачный вариант, лучше делать по совету Фаната.

-~{}~ 25.07.04 00:24:

P.S. Из спортивного интереса попробовал сам в простейшем виде реализовать то, что тут обсуждалось: http://www.phpclub.ru/paste/190
Жду разгромной критики.
 

DV

Guest
IL78
Не хило для "простейшего". ;)
5+
Пойду разбираться в написанном…Я методом разбора учусь – это прибавим, это убавим и что из этого получается. .:D
 

SiMM

Новичок
IL78, функция бы выглядела более читабельной (по крайней мере - добавить/убавить элемент было бы гораздо проще), если бы ты использовал [m]strtr[/m] (example 2) вместо [m]str_replace[/m], да и думаю использовать explode в name_to_standart - нелогично (хотя бы потому, что интуитивно функция должна возвращать строку).
Автор оригинала: DV
Я методом разбора учусь – это прибавим, это убавим и что из этого получается. .:D
Это называется метод тыка и так ты реально ничему не научишься. Нет, не потому, что занимаешься разбором чужого кода - а потому, что учишься методом прибавим/убавим. Надо понимать каждую строчку кода, а не танцевать над ним с бубном.
 
Сверху