Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Заменить совпадения, исключая в поиске 1 словосочтание.
Форумы портала PHP.SU » PHP » Регулярные выражения » Заменить совпадения, исключая в поиске 1 словосочтание.

Страниц (1): [1]
 

1. LShark - 28 Февраля, 2013 - 20:35:12 - перейти к сообщению
Есть что то вроде:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <font=white [случайный набор символов]>
  2. <font=black [случайный набор символов]>
  3. <font=#06ff33 [случайный набор символов]>
  4. <font=red [случайный набор символов]>
  5. <font=white [случайный набор символов]>
  6. <font=long [случайный набор символов]>
  7. <font=detroit [случайный набор символов]>


Необходимо заменить всех их, исключая те, в которых font=white

Понимаю, что просто, но торможу что то.

Вариант использую что то вроде:
font=.?*\s.?*>

Как исключить слово white из попадания? В уроках найти не могу Недовольство, огорчение
2. zypikov - 01 Марта, 2013 - 11:47:13 - перейти к сообщению
LShark пишет:
<font=white [случайный набор символов]>

LShark у вас вышеприведенный код записан одной строкой? Или функция регулярного выражения обрабатывает в цикле каждое
CODE (html):
скопировать код в буфер обмена
  1. <font=white [случайный набор символов]>
?

Вообще лучше напишите полностью регулярку..

LShark пишет:
Необходимо заменить всех их, исключая те, в которых font=white

PHP:
скопировать код в буфер обмена
  1.  
  2. $str = '<font=white [случайный набор символов]>';
  3. if (!preg_match('/font=white/i',$str)) { $str = 'то на что меняем'; }
  4.  
3. LShark - 01 Марта, 2013 - 16:25:40 - перейти к сообщению
Я имел ввиду, что мне нужно заменит ВСЕ строи, которые содержат font= КРОМЕ тех, где font=white

Меняется все не в цикле, а стандартным preg_replace.

Просто таким образом из говнокода индусов ворд-микрософта генерируется нормальный HTML.

font= заменяю на style=", но проблема в том, что бэкграунд и в некоторых местах шрифт выделены БЕЛЫМ цветом (в ворде так многие ТП прячут текст (белый на белом) или поправляют выделенное бэкграундом (вместо прозрачного ставят белый фон). Так вот ТАКИЕ фонты и бэки сохранять не надо.

Потому и говорю - мне нужно вариант регулярки, в которым будут отлавливаться ВСЕ сочетания font=... и.т.д., кроме тех, в которых font=white

По этой причине и не могу отдельно высеиватьпрег-матчем, так как white может встречаться и в текста, а вот font='white' я затем удаляю вместе с ненужными спанами.

Просто выражение ^(white)*? не срабатывает, вроде. Множно, конечно, заболванить ^[w]*? но не то...
(Добавление)
Кстати, такой вопрос уже был:
http://www.php.su/forum/topic.ph...4&topic=2001
Но ответы странно-кривые.
(Добавление)
Поскрипев мозгами и почитав нашел ответ в той теме:

CODE (htmlphp):
скопировать код в буфер обмена
  1. font=(?:(?!white).)*?


Ищет все варианты font=.... кроме font=white

 

Powered by ExBB FM 1.0 RC1