Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Очистка строки
 
 автор: добряк   (29.11.2012 в 04:51)   письмо автору
 
 

Здравствуйте.
Подскажите пожалуйста.
Надо очистить строку от всего кроме букв и слов.
Нужно удалить все точки, кавычки, спец символы, тире, слеши и т.п.
Необходимо для построчного поиска по тексту, когда в одинаковых предложениях присутствуют лишние символы, введенные по ошибке(опечатке)

  Ответить  
 
 автор: cheops   (29.11.2012 в 06:50)   письмо автору
 
   для: добряк   (29.11.2012 в 04:51)
 

А пробельные символы должны оставаться?

  Ответить  
 
 автор: добряк   (29.11.2012 в 13:16)   письмо автору
 
   для: cheops   (29.11.2012 в 06:50)
 

Есть два файла с фразами, и синтаксическими ошибками.
Мне надо оптимизировать построчный поиск фразы в файле, где во фразах есть опечатки.
В поисковой фразе так же считать возможность ошибки, если символ - не буква
Считать, что в словах ошибок нет.(орфографических ошибок нет)

Возможно надо разбить на лексемы, на слова и поместить в массив. Или надо в предложении оставить одни слова и одинарные пробелы между словами.
Хотя может есть другой вариант, мне надо для поиска по тексту на совпадение фразы(слов фразы).

Допустим есть строки:
"Очистка строки",
"Очистка строки.",
"Очистка-строки".
Какая правильная неизвестно, поэтому считать, что все они эквивалентно равны.


Или например найти: "А зори здесь громкие". Женское лицо войны
В файле есть запись: «А зори здесь громкие» Женское лицо войны.
Тут тоже надо считать строки эквивалентными.
Интересно, что например http://www.labirint.ru/ находит даже по такой ошибочной фразе "зресь гронкие А зори "
Как оптимизировать поиск?

  Ответить  
 
 автор: Mookapek   (29.11.2012 в 21:58)   письмо автору
 
   для: добряк   (29.11.2012 в 13:16)
 

Можно очистить строки так:
$text = preg_replace("/[^а-я,0-9]/", "", strtolower($text));

То есть оставляем русские буквы и цифры, предварительно переведя строку в нижний регистр.

  Ответить  
 
 автор: добряк   (29.11.2012 в 23:52)   письмо автору
 
   для: Mookapek   (29.11.2012 в 21:58)
 

Спасибо. А как слова искать по текстовому файлу, что бы быстрее.

  Ответить  
 
 автор: Mookapek   (30.11.2012 в 16:44)   письмо автору
 
   для: добряк   (29.11.2012 в 23:52)
 

<?php
$lines 
file("text.txt");
foreach (
$lines as $line_num => $line)
{
 
$line preg_replace("/[^а-я,0-9]/"""strtolower($line));
 
$lines[$line_num] = $line;
}
?>

Если в файле text.txt содержится такой текст:
Очистка строки
"очистка строки."
Очистка-строки

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

Array
(
    [0] => очисткастроки
    [1] => очисткастроки
    [2] => очисткастроки
)

А поиск по массиву обеспечивает функция array_search().

  Ответить  
 
 автор: добряк   (01.12.2012 в 20:50)   письмо автору
 
   для: Mookapek   (30.11.2012 в 16:44)
 

Наверно так лучше.

Спасибо.

  Ответить  
 
 автор: добряк   (01.12.2012 в 22:45)   письмо автору
 
   для: Mookapek   (30.11.2012 в 16:44)
 

Я благодарен вам,

  Ответить  
 
 автор: добряк   (01.12.2012 в 23:24)   письмо автору
 
   для: Mookapek   (29.11.2012 в 21:58)
 

.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования