|
Сравнение строк
|
| Автор |
Сообщение |
madhamster $a ||= 5;


Зарегистрирован: 09.10.2006 Сообщения: 728
32371 
|
Добавлено: Чт, 14 Дек, 2006 15:09 Заголовок сообщения: Сравнение строк |
|
|
Нужно сравнить две строки к примеру:
| Код: |
$word = "andrew";
$string = "atrnmdesw";
|
Задача такая, если в строке $string содержатся все символы что и в $word вернуть true, иначе false...
Звучит просто но я никак не могу подобрать нужной функции... c preg_match_all() не прокатило...
Мож у кого получится... |
|
| Вернуться к началу |
|
 |
Gimli Хостинг — это наше всё!


Зарегистрирован: 30.07.2006 Сообщения: 115
6116 
|
Добавлено: Чт, 14 Дек, 2006 16:21 Заголовок сообщения: |
|
|
| разделяй строку на символы и проверяй... |
|
| Вернуться к началу |
|
 |
fbd Интернет на завтрак


Зарегистрирован: 28.12.2006 Сообщения: 46
1607 
|
Добавлено: Ср, 10 Янв, 2007 15:57 Заголовок сообщения: |
|
|
Кол-во здесь не учитывается. Т.е. если в $word какой-то символ несколько раз встречается, а в $string меньшее кол-во раз, то все равно будет работать ). Php 5 у меня нет, но по идее должно работать.
| Код: | <?
$word = "andrew";
$string = "atrnmdesw";
// PHP 5
if ($word == array_intersect(str_split($word), str_split($string)))
echo 'true';
else
echo 'false';
// PHP 4
$i = 0;
$ok = true;
for($i = 0; $i < strlen($word); $i++)
if (strpos($string, $word[$i]) === false)
{
$ok = false;
break;
}
var_dump($ok);
?> |
А еще я тут подумал, и не решил как строку в массив символов в PHP 4 преобразовать. Т.е. в php 5 это str_split() как раз. |
|
| Вернуться к началу |
|
 |
Wink $a ||= 5;


Зарегистрирован: 08.08.2006 Сообщения: 899 Откуда: Россия, Омск 113191 
|
Добавлено: Ср, 10 Янв, 2007 17:27 Заголовок сообщения: |
|
|
Надо было тему назвать "Сравнение стрингов"  |
|
| Вернуться к началу |
|
 |
Дедушка Стри Хостинг — это наше всё!


Зарегистрирован: 16.10.2006 Сообщения: 170 Откуда: Украина, Луганск 4122 
|
Добавлено: Ср, 10 Янв, 2007 18:34 Заголовок сообщения: |
|
|
| Wink писал(а): | | "Сравнение стрингов" |
Не-е... а то у некоторых плохо воспитанных пользеров возникнет пошлая ассоциация. Как у мну  |
|
| Вернуться к началу |
|
 |
madhamster $a ||= 5;


Зарегистрирован: 09.10.2006 Сообщения: 728
32371 
|
Добавлено: Ср, 10 Янв, 2007 22:12 Заголовок сообщения: |
|
|
| Wink писал(а): | Надо было тему назвать "Сравнение стрингов"  |
ГЫЫЫ. Я хотел но постеснялся
fbd а вот тут я чтото не понял... Ты сравниваешь строку с массивом? Ведь array_intersec возвращает массив...
| Код: |
if ($word == array_intersect(str_split($word), str_split($string)))
echo 'true';
else
echo 'false';
|
Тут нада обьединить элементы массива в строку функцией implode
| Код: |
<?
$word = "andrew";
$string = "atrnmdesw";
if ($word == implode("", array_intersect(str_split($word), str_split($string))))
echo 'true';
else
echo 'false';
?>
|
Вот теперь работает отлично! Спсибо за идею, игра висилица спасена  |
|
| Вернуться к началу |
|
 |
KAIN Интернет на завтрак

Зарегистрирован: 26.12.2006 Сообщения: 46
1829 
|
Добавлено: Чт, 11 Янв, 2007 05:18 Заголовок сообщения: |
|
|
Прошу прощения за тупость, но обьясните мне почему не канает такой метод? или может я вопрос не прально понял.
| Код: |
<?php
if($stribg == $word) {echo "Внатуре (TRUE)";}
else {echo "не, нифига (FALSE)";}
?> |
? |
|
| Вернуться к началу |
|
 |
larstas Интернет на завтрак


Зарегистрирован: 09.12.2006 Сообщения: 88 Откуда: Украина, Луганск 4422 
|
Добавлено: Чт, 11 Янв, 2007 05:28 Заголовок сообщения: |
|
|
KAIN
то, что написал ты дает тру, если обе переменные равны. А человеку нужно проверить содержатся ли все те же символы в одной переменной, что и в другой.
Причем они судя по всему могут повторяться!
Поэтому такой метод и не канает. |
|
| Вернуться к началу |
|
 |
fbd Интернет на завтрак


Зарегистрирован: 28.12.2006 Сообщения: 46
1607 
|
Добавлено: Чт, 11 Янв, 2007 11:53 Заголовок сообщения: |
|
|
madhamster
ну или надо, чтоб слева было str_split($word)
)
Вообще очевидно, что строка это массив символов, может быть им нужно было перегрузить == для того, чтобы массив можно было сравнивать со строкой? А символ конца строки бы не считался. |
|
| Вернуться к началу |
|
 |
madhamster $a ||= 5;


Зарегистрирован: 09.10.2006 Сообщения: 728
32371 
|
Добавлено: Чт, 11 Янв, 2007 12:02 Заголовок сообщения: |
|
|
Да larstas ты правильно понял _________________
 |
|
| Вернуться к началу |
|
 |
KAIN Интернет на завтрак

Зарегистрирован: 26.12.2006 Сообщения: 46
1829 
|
Добавлено: Чт, 11 Янв, 2007 13:23 Заголовок сообщения: |
|
|
| ну тогда нужно ставить задачу корректнее, и уточнять что символы могут идти в разнобой. |
|
| Вернуться к началу |
|
 |
|