| |
|
|
| | Приветствую!
Подскажите как решить такую задачку, есть файл текстовой
и надо в нём удалить одинаковые слова все , слов одинаковых несколько,
можно было бы разбить содержимое файла на элементы массива по пробелу,
и удалить одинаковые, то в таком случае наверно содержание строк перемешается, а хотелось бы чтобы содержание текста осталось таким же только без одинаковых слов, допустим в файле:
Шла саша по шоссе долго шла и шла
На дворе трава много травы :)
(после прохода скриптом хотелось бы иметь следующее:)
саша по шоссе и
на дворе много
Вот может кто подскажет как такое удаление сделать? | |
| |
|
|
| |
|
|
| |
для: LIsa
(18.07.2006 в 00:14)
| | |
<?php
/*
* Дата создания 18.07.2006 0:18:39
* package_name
* @author Alexandr Beshkenadze aka akira
* (c) akira 2006
*
*/
function kill_dublicat($str){
/*
* Рабираем слова на массивы, в каждом эл-те массива предложение, сохраняем смысл
* */
$br = explode(".",$str);
/*
* проходим по массиву и
* */
for($i=0;$i<count($br);$i++){
/*
* разбиваем в массив по словам, получаем двумерный массив.
* */
$word[$i]=explode(' ',$br[$i]);
/*
* Убиваем дубликаты слов (трава и травы - слова разные).
* */
$word[$i] = array_unique($word[$i]);
/*
* Соеденяем слова как были, но без дубликатов.
* */
$word[$i] = implode(' ',$word[$i]);
}
/*
* Ставим на место предложения.
* */
$br2str = implode('.',$word);
/*
* Возвращаем строку.
* */
return $br2str;
}
/*
* Пример использования, считываем из файла, но можно и сразу строчку передать.
* */
$str=file_get_contents('text.txt'); // Шла саша по шоссе долго шла и шла. На дворе трава много травы
echo kill_dublicat($str); // Шла саша по шоссе долго шла и. На дворе трава много травы
?>
|
| |
| |
|
|
| |
|
|
| |
для: AKiRA
(18.07.2006 в 00:41)
| | | :))) Я зажег :))) На эклипсе просто так комментарии писать :) | |
| |
|
|
| |
|
|
| |
для: AKiRA
(18.07.2006 в 00:45)
| | | зажжег да:)
а если в тексте нет точки "." :)
и если хочется удалить не только дубликаты а и сами слова которые дублируются, то есть и дубликаты и оригиналы, так сложно сделать?
такой скрипт почему то не совсем правильно работает:-\
$file = file("text.txt","r");
$mas1 = implode (" ",$file);
echo $mas1;
$mas2 = explode (" ",$mas1);
echo "<br><br>";
$result = array_unique($mas2);
foreach ($result as $slovo) {
echo $slovo;
echo " ";
}
|
| |
| |
|
|
| |
|
|
| |
для: Lisa
(18.07.2006 в 01:07)
| | | Ну какой текст без точки? Ну можно точку любым символом заменить. | |
| |
|
|
| |
|
|
| |
для: AKiRA
(18.07.2006 в 01:17)
| | | ну вот такой например:)
Шла саша по шоссе долго шла и шла
На дворе трава много трава
и надо чтобы убрались дубликаты и оригиналы дубликатов
то есть:
Саша по шоссе долго и
На дворе много | |
| |
|
|
| |
|
|
| |
для: LIsa
(18.07.2006 в 01:24)
| | | Заменить:
/*
* Рабираем слова на массивы, в каждом эл-те массива предложение, сохраняем смысл
* */
$br = explode(".",$str);
|
На:
/*
* Рабираем слова на массивы, в каждом эл-те массива предложение, сохраняем смысл
* */
$br = $str;
|
И заменить:
/*
* Пример использования, считываем из файла, но можно и сразу строчку передать.
* */
$str=file_get_contents('text.txt'); // Шла саша по шоссе долго шла и шла. На дворе трава много травы
|
На:
$str=file('text.txt'); // Шла саша по шоссе долго шла и шла. На дворе трава много
|
| |
| |
|
|
| |
|
|
| |
для: AKiRA
(18.07.2006 в 01:30)
| | | странно.... :-\
у тебя работает этот скрипт?
у меня ошибок никаких не выдает, но удалять ничего не удаляет:-\ где то ошибка наверно
В общем получается так:
1 вариант скрипта удаляет только если слова все написаны на одной строке,
если есть перенос строки то ничего не обрабатывается кроме первой строки.
а второй вариант скрипта где без точки, не удаляет ничего вообще:( | |
| |
|
|
| |
|
|
| |
для: LIsa
(18.07.2006 в 01:50)
| | | т.е. он выводит тот же текст? Или не меняет в текстовом файле содержимое? | |
| |
|
|
| |
|
|
| |
для: AKiRA
(18.07.2006 в 02:15)
| | | В общем получается так:
1 вариант скрипта удаляет только если слова все написаны на одной строке,
если есть перенос строки то ничего не обрабатывается кроме первой строки.
а второй вариант скрипта где без точки, не удаляет ничего вообще:(
Шла саша по шоссе
долго шла и шла
На дворе трава много трава
дрова крот дрова
рок урок рок
после функции выводит:
Шла саша по шоссе .долго шла и .На дворе трава много трава .дрова крот дрова. .рок урок рок | |
| |
|
|
| |
|
|
| |
для: LIsa
(18.07.2006 в 02:20)
| | | ну помогите плиз:( | |
| |
|
|
| |
|
|
| |
для: Lisa
(19.07.2006 в 06:12)
| | |
function hehe ($string) {
$string = strtolower ($string);
$words = array ();
$lines = explode ("\n", $string);
foreach ($lines as $line) {
$line_words = explode (" ", $line);
$words = array_merge ($words, $line_words);
}
$words = array_unique ($words);
foreach ($words as $word) {
if (substr_count ($string, $word) > 1) {
$string = preg_replace ("/" . $word . "[\s*]/i", "", $string);
}
}
return ($string);
}
echo (hehe ("Шла саша по шоссе долго шла и шла
На дворе трава много трава"));
|
| |
| |
|
|