preg_replace

romanich

Новичок
preg_replace

PHP:
$themes =
"<SELECT NAME='themes'>
<option value='Пункт 1'>Пункт 1</option>
<option value='Пункт 2'>Пункт 2</option>
</select>";
До этого выдергиваем из базы значения селектов (
PHP:
$rrow[2]
). Если есть совпадения, то добавляем selected (см. код ниже).

PHP:
$themes = preg_replace("#<option value='".$rrow[2]."'>".$rrow[2]."</option>#", "<option value='".$rrow[2]."' selected>".$rrow[2]."</option>", $themes);
echo $themes;
Все отрабатывает на "ура", за исключением того, когда в значениях "пролетают" зарезервированные символы, сейчас натолкнулся на символы круглых скобок. Понятно, что и при квадратных будет вылетать то-же косяк. К примеру,
PHP:
$themes =
"<SELECT NAME='themes'>
<option value='Пункт 1'>Пункт 1</option>
<option value='Пункт 2 (Что-то еще)'>Пункт 2 (Что-то еще)</option>
</select>";
Как устранить или возможно ли устранить такой "косяк". Заранее спасибо.

P.S. Будьте так снисходительны и не посылайте меня сразу в "ман". По форуму поиском пролазил, но ничего близкого так и не нашел.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
1. Есть особый смысл хранить дроп-дауны в БД? :D
2. Самостоятельные мысли есть?

У тебя _очень_странные_ объяснения причин потребности в регулярках.
 

romanich

Новичок
1. По пункту 1.
Может смысла и нет. Но есть БД в среднем около 40000 строк, где это уже есть.
2. По пункту 2.
Искать в тексте, в данном случае скобки и преобразовывать их во что-то другое, потом производить обратную операцию. Но мне кажется как-то это не правильно.

Может есть какие-то другие решения. Мне бы хоть краешком глаза глянуть. А??? :о)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
romanich
Искать в тексте, в данном случае скобки и преобразовывать их во что-то другое, потом производить обратную операцию. Но мне кажется как-то это не правильно.
Вы индус?с ;)
Что мешает добавить символы () в Ваше регулярное выражение?
+
символы () являются служебными.
Их нужно екранировать.

pcre.ru
в помощь.

-~{}~ 22.04.08 15:44:

.


[telepat_mode]
[m]preg_quote[/m] ?
[/telepat_mode]
 

romanich

Новичок
Автор оригинала: Mr_Max
romanich

Вы индус?с ;)
Что мешает добавить символы () в Ваше регулярное выражение?
+
символы () являются служебными.
Их нужно екранировать.

pcre.ru
в помощь.
Но хоть в "ман" не послали, и на этом спасибо. По поводу экранирования, я же все написал подробно выше. При чем здесь индус? Откуда я знаю, когда и какой спец. символ выволится? Есть переменная, которой присваиваем значение - кусок html-кода. Дальше сравниваем кусок html-кода и строки из БД. Есть совпадение, что-то добавляем, нет - оставляем без изменения.

За ссылочку спасибо.

-~{}~ 22.04.08 16:53:

preg_quote
За preg_quote спасибо - выручили!!!

Удачи.
 
Сверху