За последние 24 часа нас посетили 19536 программистов и 1602 робота. Сейчас ищут 920 программистов ...

КАКОЙ ОПЕРАТОР ОБРАБАТЫВАЕТ СИМВОЛЫ В ПЕРЕМЕННОЙ?

Тема в разделе "PHP для новичков", создана пользователем Contessa, 8 мар 2012.

  1. Contessa

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

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    Добрый вечер,

    подскажите какой оператор обрабатывает буквы (символы) содержащиеся в переменной?

    Нужно написать условие типа:
    Если последняя (-нии) буквы в переменной равны ...,
    ТО выполнить следующее...
    Если нет...
     
  2. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Строку можно рассматривать как массив
    str[Номер символа]
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    substr() функция. Можно задать отрицательную позицию - тогда возьмет с конца. Но в пхп можно к любой строке обратиться как к массиву, со всеми вытекающими.
     
  4. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Только вам один момент..
    Кол-во символов не узнаете count все таки эт не как в c++, для этого strlen
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а еще лучше mb_strlen =)
     
  6. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Aль iconv_strlen
     
  7. Contessa

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

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    Спасибо за ответы, но мне ничего не понятно :)
    Вы можете дописать на php такую строчку:
    $y=$_POST[y];
    $x=$_POST[x];
    определяем последние буквы в двух переменных;
    if последняя буква в $y равнa "a"
    замещаем последнюю букву в $x на эту "а";
    ...
    и echo обе переменные;
    Спасибо.
     
  8. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    $char='a';
    if($y[iconv_strlen($y)-1]==$char)$x[iconv_strlen($x)-1]=$char;
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    кузмич, такой фокус не прокатит пока вроде как. Вроде как пока еще символы в массиве у строки будут байтами, а возвращает iconv_strlen возможно мультибайтное кол-во. и будет косяк.
    Код (PHP):
    1. $y=$_POST['y'];//кавычки не забываем
    2. $x=$_POST['x'];//нет смысла присваивать значение поста переменной, если никакие операции над значением не производятся.
    3. if ($char == mb_substr($y, -1, 1) ) {
    4. ////////////////////////////////////////
    5.  
     
  10. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Ну как сказать у меня все нормал работает так шо так)

    Добавлено спустя 29 секунд:
    Код (Text):
    1. <?php
    2. $y='scssa';
    3. $char='a';
    4. $x='scs';
    5. if($y[iconv_strlen($y)-1]==$char)$x[iconv_strlen($x)-1]=$char;
    6. print($x);
    7. ?>

    sca

    Добавлено спустя 2 минуты 9 секунд:
    Версия php 5.3.3
    Такая фигня от 5.3.0 пашет а ниже не знаю

    Добавлено спустя 1 минуту 53 секунды:
    mb_substr($y, -1, 1) и это лишнее
    mb_substr($y, -1) этог хватит)
     
  11. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Да и iconv_strlen это то же самое шо и mb_string ток iconv с 5 вроде как а mb с 4
     
  12. Contessa

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

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    Теперь все понятно :) Спасибо.
    Код, который прислал Артем работает.
    А как мне получить "остаток" от слова, т.е. слово без последней буквы?
    Оно пригодится в дальнейшей части кода :)
    Спасибо что так быстро отвечаете :eek:

    Добавлено спустя 3 минуты 50 секунд:
    Уточнение:
    мне нужно из слова получить две переменные:
    1) последняя буква
    2) слово без последней буквы
    а потом уже их сравнивать, замещать, менять...
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нужно найти последний пробел =)
     
  14. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Код (PHP):
    1. <?php
    2. // Слово
    3. $word = 'Слово';
    4. // Получаем слово без последней буквы и последнюю букву
    5. $withoutLastLetter = mb_substr($word, 0, mb_strlen($word) - 1);
    6. $lastLetter = mb_substr($word, -1, 1);
    7. // Проверим, что получилось
    8. echo($withoutLastLetter . '<br />' . $lastLetter);
    9. ?>
    Если используешь кодировку utf-8 - то, возможно, нужно явно это указать последним параметром функций mb_*
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а что вобще требуется? алгоритм какой-то некузявый
     
  16. artem-Kuzmin

    artem-Kuzmin Активный пользователь

    С нами с:
    16 фев 2012
    Сообщения:
    809
    Симпатии:
    0
    Гм а не проще...
    mb_...(str,0,-1)Кроме посл
    mb_...(str,-1) Посл
     
  17. Contessa

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

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    Спасибо за помощь, скрипт работает как надо,
    за исключением кодировки: notepad++ научился как распознавать греческий,
    но в браузере (последняя опера) отображаются только квадратики. В любой кодировке браузера.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    зачем вам нужны все эти извращения со словами?
     
  19. Contessa

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

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    Для написания скрипта по согласованию в роде и числе сущ. и прилагательных.
    И раз уж вы спросили :) я тоже у вас спрошу:
    Что и как написать в скрипте чтобы:

    при подключении файла через includе скрипт сначала пробежался по файлу со списком слов,
    если "нашел там слово", то сделал с ранее заданными переменными то-то,
    если "не нашел", то поискал в с списке2,
    если "нашел там слово", то сделал с ранее заданными переменными то-то,
    если "и там не нашел слова", то
    "забил на списки :) и выполнял скрипт дальше".
    Как подключить файл я знаю, я не знаю как прописать в коде фразы, которые здесь выделены в " " :)

    И еще вопросы по самим спискам:
    1)Файл может быть в формате txt или обязательно php?
    2)Слова в списке можно просто в столбик написать по одному в строке или их нужно как-то оформлять?

    Заранее благодарю за ответы :)
     
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а зачем вы всё слово без последней буквы сравниваете с последней буквой? о_О

    вот до этого места всё понятно
    а с этого уже не понятно

    можно забить ваши строки в массивы, но вобще люди используют БД - ее редактировать проще.
     
  21. Contessa

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

    С нами с:
    8 мар 2012
    Сообщения:
    74
    Симпатии:
    0
    >а зачем вы всё слово без последней буквы сравниваете с последней буквой? о_О

    Я этого не делаю. Вам показалось :) Кроме того речь не о русском языке,
    так что, полагаю, вы не можете знать Что там с чем нужно сравнивать чтоб согласовать в роде :)

    >пробежался по файлу со списком слов,
    >а с этого уже не понятно

    скрипт должен обратиться к файлу и поискать там слово, введенное пользователем,
    если найдет, то... ( одно if)
    если не найдет, то (другое if: искать в другом списке)
    else выполнять скрипт дальше.
    Что тут не понятно? :)
    Я не знаю как прописать в скрипте "да, нашел", "нет не нашел", т.е. вернуть правду или ложь,
    но я не знаю как это оформить. Поможете?

    >можно забить ваши строки в массивы
    Нельзя. Слишком большой список.

    >, но вобще люди используют БД - ее редактировать проще.
    Как раз наоборот: текстовый файл со списком слов на ин.языке может отредактировать любой,
    знающий язык, а базу со списком слов на ин.языке - только гений, который и лингвист и программист в одном флаконе :)
    Кроме того у меня будет полсотни файлов, хостинг с таким кол-вом БД будет просто золотой! :)
    А у меня проект некоммерческий :)