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

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

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

 

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

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

тема: Вырезать или заменить из текста все, что начинается с $ и длиной в три символа
 
 автор: hopupu   (11.12.2009 в 22:40)   письмо автору
 
 

Приветствую всех!

Дано… есть разукрашенное слово, например: SOFTTIME . Разукрашено таким способом: S$00fOFT$55cT$99cIME

После символа "$" идет значение цвета RGB ..

Есть две задачи…

1.. вырезать из слова все цвета
2.. заменить все цвета данные в формате $ccc на html код …

Спасибо

  Ответить  
 
 автор: big-trot   (11.12.2009 в 22:56)   письмо автору
 
   для: hopupu   (11.12.2009 в 22:40)
 

Решение задачи № 1
preg_replace('|(\$[0-9a-f]{3})*|i','','S$00fOFT$55cT$99cIME');


Для задачи №2 не ясно что за html код нужно вставить

  Ответить  
 
 автор: AcidTrash   (11.12.2009 в 23:05)   письмо автору
 
   для: big-trot   (11.12.2009 в 22:56)
 

заместо диапозона 0-9 можно использовать \d

  Ответить  
 
 автор: hopupu   (11.12.2009 в 23:06)   письмо автору
 
   для: big-trot   (11.12.2009 в 22:56)
 

СПАСИБО!

нужно получить вместо: S$00fOFT$55cT$99cIME

S<font color="#0000ff">OFT</font><font color="#5555cc">T</font><font color="#9999cc">IME</font>

  Ответить  
 
 автор: Fractured#   (11.12.2009 в 23:56)   письмо автору
 
   для: hopupu   (11.12.2009 в 23:06)
 

<?php

$s 
'S$00fOFT$55cT$99cIME';

if( 
preg_match('/\\$[a-f\\d]{3}/'$s) )
{
    
$s preg_replace('/\\$([a-f\\d])([a-f\\d])([a-f\\d])/''</font><font color="#\\1\\1\\2\\2\\3\\3">'$s);    
    
$s '<font>' $s '</font>';
}

echo 
$s;
?>

  Ответить  
 
 автор: big-trot   (12.12.2009 в 00:02)   письмо автору
 
   для: hopupu   (11.12.2009 в 23:06)
 

Для именно такой строки предлагается следующий монстр


$str=preg_replace('|(?:\$([\da-f])([\da-f])([\da-f]))+|i','</font><font color="#\\1\\1\\2\\2\\3\\3">','S$0ffOFT$55cT$99cIME');
$str=preg_replace('|<\/font>|','',$str,1);
$str.='</font>';


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

  Ответить  
 
 автор: big-trot   (12.12.2009 в 00:06)   письмо автору
 
   для: big-trot   (12.12.2009 в 00:02)
 

Поразительно совпадение

  Ответить  
 
 автор: hopupu   (12.12.2009 в 00:22)   письмо автору
 
   для: big-trot   (12.12.2009 в 00:06)
 

Ууф!

Спасибо! все работает!!!!! !

p.s. поиск в словах..

  Ответить  
 
 автор: hopupu   (16.12.2009 в 23:42)   письмо автору
 
   для: hopupu   (12.12.2009 в 00:22)
 

Разрешите еще вопрос… Проблема в том, что иногда я получаю цвета в формате $xxx где вместо цифры "0" стоит буква "o" .. как это исправить?

Спасибо!

  Ответить  
 
 автор: Fractured#   (17.12.2009 в 00:00)   письмо автору
 
   для: hopupu   (16.12.2009 в 23:42)
 

Очень интересно как она там оказалась.

  Ответить  
 
 автор: hopupu   (17.12.2009 в 00:10)   письмо автору
 
   для: Fractured#   (17.12.2009 в 00:00)
 

она может стоять на любом месте или на всех сразу…

эти данные я получаю не от своих пользователей, а с другого сайта в xml формате… так что мне остается только обрабатывать.. предотвратить это никак не получится..

  Ответить  
 
 автор: Fractured#   (17.12.2009 в 00:18)   письмо автору
 
   для: hopupu   (17.12.2009 в 00:10)
 

А если это не цвет вовсе? А если там ещё будет кириллические "А", "В, "С"?

  Ответить  
 
 автор: hopupu   (17.12.2009 в 00:20)   письмо автору
 
   для: Fractured#   (17.12.2009 в 00:18)
 

это именно цвет.. и там только или русское "o" или латинское…

  Ответить  
 
 автор: Fractured#   (17.12.2009 в 00:28)   письмо автору
 
   для: hopupu   (17.12.2009 в 00:20)
 

Ты можешь составить чёткие правила, что на используемом тобой ресурсе, называется кодом цвета? Или эти буковки вбивают пользователи (на том ресурсе), правила которым не писаны? За этой проблемой могут последовать другие. Они могут пробел поставить, они могут вместо знака доллара написать знак евро. Что тогда?

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

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