Замена слов по словарю

g00dwin

Гуру форума
Регистрация
9 Ноя 2006
Сообщения
164
Реакции
67
Каким образом организовать замену слов по словарю?
Видимо, примерно по такому принципу работают синонимайзеры, но тут задача в следующем.

Есть карточки товаров (достаточно много), в них есть поле - технические характеристики, в котором они собственно и перечислены, т.е. size, weight, power, capacity и т.п. Всего порядка 50 слов и словосочетаний. Нужно перевести их на русский - размер, вес и т.п. Прогонять каждую карточку через гугль-переводчик - получается громоздко, да и перевод не тот. Хочется просто заменить слова size на размер, weight на вес и т.д., т.е. составить этот словарик и пргнать через него карточки. В голову приходит только такой алгоритм - брать по слову или словосочетанию из словарика, искать его в карточке, при нахождении - заменять, и так все слова из словаря, потом так же следующую карточку и так пока карточки не кончатся. Но вроде как слишком громоздко получается. Что если карточек несколько тысяч? Может кто подскажет более изящное решение? Если можно, то сразу с куском кода.
 
Не думаю, что у тебя текст больших объёмов.
Загоняешь текст карточки в один массив, словарь в другой и делаешь замену по массивам.
Читать внимательно ман
 
Не думаю, что у тебя текст больших объёмов.
Загоняешь текст карточки в один массив, словарь в другой и делаешь замену по массивам.
Читать внимательно ман
*** скрытое содержание ***

Текст конечно небольшой.
Можно поподробнее, по какому принципу их в массив загнать?
 
Народ, ну вы че, издеваетесь? Раздел же вроде и так для начинающих. Можно просто кусок кода для примера привести? Как это "через пробелы"? А если некоторые фразы не в одно слово, а в несколько? И еще, желательно сохранить html - форматирование. Как с ним быть?
 
короче вот код.Возможно будут ошибки но только в синтаксисе
Код:
<?php
$f='тут текст карточки';
$f=str_replace('size:','размер:',$f); 
$f=str_replace('weigth:','вес:',$f);
?>
Если и это непонятно то отписывай в теме. Помогу
 
PHP:
$text = "Текст карточки";
$words = array('size','weight', ...); //Список слов для замены
$translate = array('размер','вес', ...); //Список переведенных слов
for($i=0,$i<length($words),$i++){
     $text = str_replace($words['i'],$translate['i'],$f);
}
Как-то так...
 
можно как ф-цию оформить...

PHP:
<?php


$card_text = "size = 10cm, weight = 10х10, power=220v, capacity = 40Gb  ";

 function translate($st)
  {
   
    $st=strtr($st, 
                    array(
                        "size"=>"размер", "weight"=>"вес", "power"=>"энергия", "capacity"=>"емкость" 
                        )
             );

    return $st;
  }

print(translate($card_text));
?>
 
Все варианты приблизительно одинаковые но советую взять вариант FunMan'a
 
Ребят, вы о чем? ф-ция str_replace позволяет использовать массивы в аргументах:
Код:
mixed str_replace (mixed search, mixed replace, mixed subject)
Эта функция возвращает строку или массив со всеми вхождениями search
в subject, заменёнными данным значением replace.
В PHP 4.0.5 и новее каждый параметр для str_replace() может быть массивом.
итого:
PHP:
$text = "Текст карточки"; 
$words = array('size','weight', ...); //Список слов для замены 
$translate = array('размер','вес', ...); //Список переведенных слов
$text = str_replace($words,$translate,$text);
 
Назад
Сверху