За последние 24 часа нас посетили 16885 программистов и 1672 робота. Сейчас ищут 1122 программиста ...

php, падежи

Тема в разделе "Прочие вопросы по PHP", создана пользователем Koc, 29 окт 2009.

  1. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    нужно пройтись по тексту и позаменять все слова на эти же слова с определенными ссылками. Сложность заключается в том, что мы знаем только именительный падеж искомого слова, а заменять нужно все.

    яблоко -> <a href="/fructs/apple">{то, что нашли}</a>
    cобака -> <a href="/animals/dog">{то, что нашли}</a>
    У собаки под яблоней было три яблока.
    У <a href="/animals/dog">собаки</a> под яблоней было три <a href="/fructs/apple">яблока</a>.

    Как бы это реализовать?
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Просклонять слово.
    И проводить поиск/замену по всем падежам.
     
  3. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    и вариантов нет
     
  4. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    у Яндекса есть сервис склонения имен. Но не, сервисы в печь. Готовые решения все платные или однобокие (только для месяцев, чисел).

    Короче шут с ним, заказчик сам составит словарик
     
  5. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  6. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  7. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Koc
    Ну без словарика по-любому никак, склонять существительное по падежам можно только в случае, если знаешь род слова и его окончание.
    Если второе можно хоть как-то выяснить программно, например, определение последней гласной и список декларированых согласных, то род слова программно определить никак.
    Есть одно универсальное правило для существительного третьего лица единственного числа - женский род, оканчивающийся на шипящую согласную: мышь, печь.
    Тут можно составить правило, в остальных случаях будет невозможно абсолютно точно определить слово без словаря.
     
  8. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  10. kostyl

    kostyl Guest

  11. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ручная сборка.

    PHP:
    1. <?php
    2.  
    3.  
    4. header('Content-type: text/html; charset=windows-1251');
    5. mysql_connect('localhost','ispell','spellme');
    6. mysql_select_db('ispell');
    7. mysql_query('SET NAMES CP1251');
    8. setlocale(LC_ALL,'ru_RU.CP1251');
    9.  
    10. $words = array();
    11. $word = '';
    12.  
    13. if( !empty($_GET['Q']) ) {
    14.  
    15.     $Q = $_GET['Q'];
    16.  
    17.     $Q = preg_replace('/[^а-я]/i','',$Q);
    18.  
    19.     $sql = "SELECT word_id FROM spell WHERE word_form = '".mysql_escape_string($Q)."' LIMIT 1";
    20.     $result = mysql_query($sql);
    21.  
    22.     if($result AND mysql_num_rows($result)) {
    23.        
    24.         $find = mysql_fetch_object($result);
    25.  
    26.         $sql = "SELECT word_form FROM spell WHERE word_id = {$find->word_id}";
    27.         $result = mysql_query($sql);
    28.  
    29.         while( $row = mysql_fetch_object($result) ) {
    30.             $words[] = $row->word_form;
    31.         }
    32.  
    33.         $sql = "SELECT word_word FROM words WHERE word_id = {$find->word_id} LIMIT 1";
    34.         $result = mysql_query($sql);
    35.  
    36.         $row = mysql_fetch_object($result);
    37.         $form = $row->word_word;
    38.  
    39.     } else {
    40.         $words[] = 'нинашли';
    41.     }
    42.  
    43. } else {
    44.     $Q = '';
    45. }
    46.  
    47. ?>
    48.  
    49. <form>
    50. <input type=text name=Q value="<?php echo $Q;?>">
    51. <input type=submit value="Найти">
    52. </form>
    53. <script>
    54.     document.forms[0].Q.focus();
    55. </script>
    56. <?php
    57.  
    58. if( count( $words ) ) {
    59.     while( list(,$word) = each($words) ) {
    60.         if($form == $word)
    61.             print("<u>$word</u><br />");
    62.         elseif ( $word == $Q)
    63.             print("<b>$word</b><br />");
    64.         else
    65.             print("$word<br />");
    66.  
    67.     }
    68. }
    69.  
    70. ?>
    http://440hz.ru/trash/ispell/ispell.sql.gz


    не
     
  12. kostyl

    kostyl Guest

    440Hz
    ааа. а я уж думал это не твоя база и где-то сервис есть крутой )))
    а тут есть куча вкусных штук
     
  13. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    эти внусности надо причесывать. тогда будет вкусно
     
  14. GudGuy

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

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
    440Hz
    А в какой кодировке дамп? т.е. таблицы он создаёт в CP1251, а сам файл? не UTF8?
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    было бы странно пихать в таблицу cp1251 данные в utf8 ?
     
  16. crazy

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

    С нами с:
    8 авг 2007
    Сообщения:
    20
    Симпатии:
    0
    нифига себе! супер
     
  17. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    что супер? супер это восход солнца в горах, а это рутина + руки не из жопы.
    =)
     
  18. ckjet

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

    С нами с:
    6 апр 2011
    Сообщения:
    172
    Симпатии:
    2
    440Hz
    можешь еще раз сделать ссылку на бд?