Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
cosmo Гость
|
Добавлено: Ср Окт 20 2004 00:36 Заголовок сообщения: проблема с регулярными выражениями в PHP |
|
|
Господа, с очень странной проблемой вдруг столкнулся. Помогите советом или намёком.
Задача: Избавиться от дублирующих записей.
Код:
<?php
$content = "slava slava misha misha petya petya ";
$content = preg_replace ("/([a-z]+\s)\1/","\1",$content);
echo $content;
?>
И почему-то не работает...
Если у кого есть какие-либо мысли, очень прошу поделиться...заранее спасибо.
У меня WinXP, Apache 1.3.31, PHP 4.3.4 |
|
Вернуться к началу |
|
|
Scaramouch
Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
|
Добавлено: Ср Окт 20 2004 08:33 Заголовок сообщения: |
|
|
$content = preg_replace ("/([a-z]+\s)\\1/", "\\1", $content);
Ничего странного, просто читай мануалы внимательнее _________________ Ноги - это две лишние руки. |
|
Вернуться к началу |
|
|
cosmo Гость
|
Добавлено: Ср Окт 20 2004 11:10 Заголовок сообщения: |
|
|
Уважаемый Scaramouch...огромное спасибо, всё заработало....но один вопрос всё-таки остался.
Цитата: | Ничего странного, просто читай мануалы внимательнее |
Как раз в мануале-то и написано, что экранирование обратного слэша нужно лишь в том случае, если сам обратный слэш является искомым символом. А в моём случае он используется для записи обратной ссылки. |
|
Вернуться к началу |
|
|
Scaramouch
Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
|
|
Вернуться к началу |
|
|
cosmo Гость
|
Добавлено: Чт Окт 21 2004 00:36 Заголовок сообщения: |
|
|
Эх, чувствую мне надолго хватит пищи для размышлений...однако я прямо таки физически ощущаю что мой IQ набирает вес (жалко медлено)
И на последок, если это тебя не очень затруднит, не мог бы ты ответить ещё на один вопрос:
Представь, что я загоняю в массив текстовой файл, где слова расположены в столбик (т.е. после каждого слова идёт \r), обязательно ли переводить этот столбец в строку для выполнения той же задачи, т. е. поиска повторов. Поскольку нижеприведённый код не работает.
Файл data.txt :
slava
slava
misha
misha
<?php
$content = file("data.txt");
$content = preg_replace("/([a-z]+)\r\n\\1/","\\1",$content);
?> |
|
Вернуться к началу |
|
|
petya Гость
|
Добавлено: Чт Окт 21 2004 00:52 Заголовок сообщения: zdarova cosmatii! |
|
|
petya - eto ya, slava - eto ti. a misha kto? ) |
|
Вернуться к началу |
|
|
cosmo Гость
|
Добавлено: Чт Окт 21 2004 02:25 Заголовок сообщения: |
|
|
Только что понял, что предыдущим вопросом произвёл себя в почётные ламеры.
Функция file() создаёт массив, где элементами являются строки файла, а регулярные выражения производят поиск в строке, но не сравнивают один элемент массива с другим, потому и не работает... |
|
Вернуться к началу |
|
|
Scaramouch
Зарегистрирован: 11.01.2004 Сообщения: 143 Откуда: Столица нашей Родины
|
Добавлено: Чт Окт 21 2004 08:45 Заголовок сообщения: |
|
|
Естесственно, реги не имеют отношения к твоей задаче.
Тебе надо либо объединить массив в строку implode, обработать строку регом а потом разбить в массив explode - но намного правильнее будет воспользоваться встроенной функцией array_unique _________________ Ноги - это две лишние руки. |
|
Вернуться к началу |
|
|
cosmo Гость
|
Добавлено: Вс Окт 24 2004 02:40 Заголовок сообщения: |
|
|
Буквально за пару часов до твоего ответа, всё это и проделал. Сначала Implodom потом RegExom потом Explodom. А потом взгляд наткнулся на array_unique и сердце возликовало...
Но всё равно спасибо! |
|
Вернуться к началу |
|
|
|