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

Форум Регулярные Выражения

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

 

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

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

тема: Убрать сдвоенные слова
 
 автор: Shorr Kan   (16.03.2006 в 23:22)   письмо автору
 
 

$str="lalala tutut lalala lalala lalala turtre";

Как убрать убрать все "lalala" , которые рядом друг с другом встречаются? То есть, получить:

lalala tutut lalala turtre

   
 
 автор: cheops   (17.03.2006 в 12:43)   письмо автору
 
   для: Shorr Kan   (16.03.2006 в 23:22)
 

Это всегда будет lalala или вместо этого слова может быть любое другое?

   
 
 автор: Shorr Kan   (17.03.2006 в 13:57)   письмо автору
 
   для: cheops   (17.03.2006 в 12:43)
 

Скажем так - всегда будет lalala

   
 
 автор: kasmanaft   (17.03.2006 в 19:52)   письмо автору
 
   для: Shorr Kan   (17.03.2006 в 13:57)
 

если всегда lalala, то можно так:

<?php
$str="lalala tutut lalala lalala lalala turtre";
$pattern = "(lalala ){2,}";
$str = ereg_replace($pattern, "lalala ", $str);
echo $str;
?>

(опять же рег. выр-е php, т.к. не силен в perl)

   
 
 автор: Shorr Kan   (17.03.2006 в 20:31)   письмо автору
 
   для: kasmanaft   (17.03.2006 в 19:52)
 

А есть особая разница? Что там ногу свернешь, что там...

Спасибо

   
 
 автор: Shorr Kan   (17.03.2006 в 21:10)   письмо автору
 
   для: Shorr Kan   (17.03.2006 в 20:31)
 

А можно, из чистого любопытства - ВСЕ сдвоенные слова?

   
 
 автор: cheops   (17.03.2006 в 23:02)   письмо автору
 
   для: Shorr Kan   (17.03.2006 в 21:10)
 

Ну вероятно как-то так
<?php 
$str
="lalala tutut lalala lalala lalala turtre";
$pattern "([\w]+ ){2,}"
$str preg_replace($pattern"lalala "$str); 
echo 
$str
?>

   
 
 автор: Shorr Kan   (18.03.2006 в 03:49)   письмо автору
 
   для: cheops   (17.03.2006 в 23:02)
 

Warning: preg_replace(): Unknown modifier '{'

   
 
 автор: kasmanaft   (18.03.2006 в 10:28)   письмо автору
 
   для: Shorr Kan   (18.03.2006 в 03:49)
 

исправить ошибку можно так:
<?php
$str
="lalala tutut lalala lalala lalala turtre";
$pattern "/([\w]+ ){2,}/";
$str preg_replace($pattern"lalala "$str);
echo 
$str;
?>


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

   
 
 автор: Shorr Kan   (18.03.2006 в 10:56)   письмо автору
 
   для: kasmanaft   (18.03.2006 в 10:28)
 

А я уже уверился, что они всесильны....

   
 
 автор: kasmanaft   (18.03.2006 в 11:03)   письмо автору
 
   для: Shorr Kan   (18.03.2006 в 10:56)
 

возможно :)
я тоже в них не особо шарю :) нужно услышать мнение cheops...

   
 
 автор: cheops   (18.03.2006 в 12:52)   письмо автору
 
   для: kasmanaft   (18.03.2006 в 11:03)
 

Да скорее всего нельзя... я с самого начала хотел написать невозможно, но потом что-то дёрнуло написать вариант... больше ничего конструктивного в голову не лезет :)))

   
 
 автор: Drago   (19.03.2006 в 04:28)   письмо автору
 
   для: Shorr Kan   (18.03.2006 в 10:56)
 

Если регулярные выражения не подходят, можно применить эту функцию

<?php
$str
="lalala tutut lalala lalala lalala turtre";
function 
del_double_words ($str)
{
    
$array explode (" "$str);
    
$str_new "";
    foreach (
$array as $key => $word)
    {
      if (
$word == $array[$key 1])
        unset (
$array[$key]);
      else
        
$str_new .= $word " ";
    }
    return 
trim ($str_new);
}
echo 
del_double_words ($str);
?>

   
Rambler's Top100
вверх

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