За последние 24 часа нас посетил 23561 программист и 1725 роботов. Сейчас ищут 879 программистов ...

Есть функция для сравнение строк по первым символам?

Тема в разделе "PHP для новичков", создана пользователем Namer, 16 мар 2011.

  1. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Подскажите, есть в РНР функция для сравнения строк не по длине и не по сумме кодов символов, а по первым буквам алфавита?
    Например, есть два слова: "авто" "мото" Нужно их сравнить и так как буква "а" в алфавите раньше "м", то функция должна сообщить, что первое слово меньше второго.
    Если первые буквы совпадают, то сравнивать нужно по следующим за ними буквам. Например из двух слов "аавто" "амото" нужно чтобы функция сообщила, что первое слово меньше второго, так как вторая буква "а" в слове "аавто" в алфавите раньше, чем вторая буква "м" в слове "амото".
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Буквы - это для тебя они буквы, для компьютера это те же самые цифры.
    И "м", соответственно, имеет высший номер в таблице символов нежели "а"
     
  3. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    ну да, я в курсе. "м" имеет больший кодовый знак и поэтому второе слово больше. Короче мне нужно сравнение не сразу всей строки, а последовательное побуквенное. Вот и интересуюсь есть ли для такого случая в РНР функция? Если нет, то придется самому парсить побуквенно слова и писать эту функцию.
     
  4. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    strcmp
    И начать гуглить что такое "локаль" и как ее правильно поставить ;)
     
  5. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Эта функция кажись не подходит. Про нее пишут, что в ней: "Величина" строки вычисляется согласно кодам символов. Т.е. если взять слова "аяяяя" "баааа", то получится, что второе слово меньше первого, так как сумма кодов его символов меньше.
    А надо только по первым и дальше, если первые совпадают.
     
  6. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Во-первых, читайте только официальную документацию. Русских докуметаций, которые можно использовать - нет пока.
    Во-вторых,
    Код (Text):
    1. php -r 'print strcmp("аяяяя", "баааа");'
    2. -1
    Returns < 0 if str1 is less than str2
    с вас 100$ за то, что нашли время порассуждать в форуме, но не нашли время банально взять и проверить.
     
  7. Namer

    Namer Активный пользователь

    С нами с:
    14 апр 2010
    Сообщения:
    492
    Симпатии:
    0
    Попробоавал и правда то что нужно. В книге наверно не дописали, что в случае если одна строка длинее другой, то в сравнении использутся не все символы строк, а столько, сколько в самой коротко из строк. Спасибо! :)