Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Некорректная работа с словосочетаниями 
:(
    Опции темы
bubl1k
Дата 18.2.2008, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Код

function simplesyn($content){
    $content=preg_replace_callback('#([^\s]+)#is','repl',$content);
}

function repl($matches) {
    global $wpdb;
    $table_name = $wpdb->prefix . "simplesyn";
    $word=$matches[1];
    $row=$wpdb->get_row("SELECT * FROM `$table_name` WHERE `word`='$word'", ARRAY_A, 0);
    if (isset($row['word'])){
    $spl=explode(',',$row['syns']);
  if ((ord(substr($word,0,1)>64))&&(ord(substr($word,0,1)<91)))
   return ucwords($spl[array_rand($spl)]);
  else return $spl[array_rand($spl)];
    }
    else return $word;
}


Этот скрипт заменяет слова в тексте на слова синонимы из базы, если это одно слово то все в порядке, а если это например словосочетание то замены нет, как исправить?


M
Guedda
Модератор: Пользуйтесь кнопкой "Код"!


Это сообщение отредактировал(а) Guedda - 18.2.2008, 11:40
PM MAIL ICQ   Вверх
Nigel
Дата 18.2.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


познаю мир
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 20.11.2007

Репутация: 7
Всего: 19



Если словосочетания, то разбивать на отдельные слова и далее также заменять.
PM MAIL   Вверх
bubl1k
Дата 18.2.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Цитата(Nigel @  18.2.2008,  10:58 Найти цитируемый пост)
Если словосочетания, то разбивать на отдельные слова и далее также заменять. 

Мне нужно именно фразы заменять.
PM MAIL ICQ   Вверх
A1ekcandr
Дата 18.2.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



добавляй в базу словосочетния и перепиши регулярное выражение
PM MAIL   Вверх
bubl1k
Дата 18.2.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Цитата(A1ekcandr @  18.2.2008,  12:42 Найти цитируемый пост)
добавляй в базу словосочетния и перепиши регулярное выражение 

Я их и так добавляю, а как переписать регулярку чтобы все задуманное работало?

Это сообщение отредактировал(а) bubl1k - 18.2.2008, 13:07
PM MAIL ICQ   Вверх
A1ekcandr
Дата 18.2.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1




Цитата

а как переписать регулярку чтобы все задуманное работало



это зависит от того что ты парсишь и как в том тексте который ты парсишь эти слова выделены. 
Что из себя представляет сам текст? возможно тебе будет достаточно одного слова в выражении типа так у тебя:

Текст: я сегодня выпил кофе и пашел гулять

нужно заменить текст выпил кофе, пишем запрос который даст результат на слово "выпил" (LIKE выпил) , из базы берем значение выпил кофе и синоним бухнул водки, далее заменяем в тексте через preg_replace выпил кофе на бухнул водки 

Это сообщение отредактировал(а) A1ekcandr - 18.2.2008, 14:14
PM MAIL   Вверх
bubl1k
Дата 18.2.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



A1ekcandr, мне нужно обрабатывать множество разных текстов и заменять как отдельные слова, так и словосочетания и предложения.
PM MAIL ICQ   Вверх
A1ekcandr
Дата 18.2.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



Если производительность не важна то можно взять все значения таблицы синонимов запросом SELECT * FROM `$table_name`, далее написать цикл  и делать замену через str_replace в етом цикле просматривая текст

т.е. каждый раз просматривать текст придется для каждого значения строки синонимов


Это сообщение отредактировал(а) A1ekcandr - 18.2.2008, 15:06
PM MAIL   Вверх
bubl1k
Дата 18.2.2008, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 29.1.2007

Репутация: 1
Всего: 1



Цитата(A1ekcandr @  18.2.2008,  15:01 Найти цитируемый пост)
Если производительность не важна то можно взять все значения таблицы синонимов запросом SELECT * FROM `$table_name`, далее написать цикл  и делать замену через str_replace в етом цикле просматривая текст 

 smile 
PM MAIL ICQ   Вверх
A1ekcandr
Дата 18.2.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 99
Регистрация: 27.6.2007

Репутация: 1
Всего: 1



Код

<?
$content="Masmasdsa sadsadsad sa asd sad выавыа asdsadsad"; //твой текст

$table_name="Твоя таблица";
$result = mysql_query( "SELECT `*` FROM `".$table_name."`");

while ($t = mysql_fetch_assoc($result))
{
 $content    = str_replace($t['нужное слово'],$t['синоним'],$content);
}
?>


ну тип такого ченить вроде должно работать
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.