|
|
|
|
|
для: exp
(09.03.2010 в 16:42)
| | Спасибо огромное!!! Всё работает как надо!! | |
|
|
|
|
|
|
|
для: Brothersssddsss
(09.03.2010 в 15:53)
| | вроде есть и другие варианты | |
|
|
|
|
автор: .exp (09.03.2010 в 16:39) |
|
|
для: Brothersssddsss
(09.03.2010 в 15:53)
| | придётся использовать условную подмаску (?(1)(?!”))
и наверное всётаки (?<=(“)|) вместо просто (“)? потомучто выражения стараются захватить как можно больше
тольео кавычки там какие-то странные
<pre><?php
$txt = '[#1] – заменить
“[#2] – заменить
[#3]” – заменить
“[#4]” – не заменять
“ [#5] “ – заменить
“[#6] “ – заменить
';
echo preg_replace('~(?<=(“)|)\[\#(\d+)\](?(1)(?!”))~', '[#_$2_]', $txt);
|
| |
|
|
|
|
|
|
|
для: exp
(09.03.2010 в 13:38)
| | Ну где открывающая кавычка а где закрывающая проверять не надо так как если кавычка не стоит прям радом с символом [ или ] то значит надо заменять а если она стоит рядом с символом [ или ] то заменять не надо.
Например:
[#числа] – заменить
“[#числа] – заменить
[#числа]” – заменить
“[#числа]” – не заменять
“ [#числа] “ – заменить
“[#числа] “ – заменить
Если обе кавычки обязательно в плотную к символам [ и ] то заменять не надо.
Короче “[#числа]” – не надо заменять, всё остальное заменять. | |
|
|
|
|
|
|
|
для: Brothersssddsss
(09.03.2010 в 13:05)
| | одним выражением не решается.
Если икать просто [#\d+] то как будет определить какие из кавычек рядом открывающие а какие закрывающие .
или просто разбиение текста на то где надо заменять а где не надо
или прохождение каким-нибудь preg_replace_callback() с выражением типа '~\G(?:[^"]+|(")[^"]*"?)~'
где в callback-функции будет проверяться присутствие открывающей кавычки, и соответственно обрабатывать нужные блоки текста | |
|
|
|
|
|
|
| Помогите, пожалуйста, вот у нас есть текст, к примеру, такой:
adf[#числа]"sf swn [#числа] weep " [#числа] wejfp[#числа]wjfjw"[ числа]of w w "[# числа]" h qwe a г fig"[# числа]"er коу oge о к ке ку [#числа] "пврпа
в нём есть конструкции вида [#числа] так вот нужно все эти конструкции заменить на [#_числа_] т.е добавить перед числами нижнее подчёркивание, но те конструкции, которые с обеих сторон обрамлены двойными кавычками их заменять не надо.
То есть в нашем тексте должно остаться без изменения только 6, 7 конструкция. | |
|
|
|
|