|
|
|
|
|
для: Владимир55
(18.07.2010 в 11:50)
| | Пардон, сразу не заметил продолжения.
а) Вообще-то есть функция preg_quote, которая автоматически экранирует всё, что может оказаться контекстночувствительным... И если в шаблон есть нужда вставлять произвольные строки, применяют именно её.
б) несовсем ((с) cheops) понятно, зачем в Вашем случае замена по шаблону, если ни одного RegExp-терма в этом шаблоне нет?
Может проще применить str_replace? Ну или mb_str_replace (bkb(или её там) в случае utf8?
PS. Парни, вам так сложно было про preg_quote упомянуть? | |
|
|
|
|
|
|
|
|
для: Владимир55
(18.07.2010 в 11:50)
| | Оба аргумента должны быть в utf8.
> Чего в шаблоне не должно быть?
Конструкций, которые в PCRE используются в качестве служебных. Сложно случайно нарваться. Сейчас не могу привести конкретный пример.. позже. | |
|
|
|
|
|
|
|
для: sms-send
(18.07.2010 в 11:32)
| | Нет? Тогда я уже совсем ничего не понимаю!
1. Что, переменная $val должна быть в кодировке 1251?
2. В шаблоне латиница, кириллица и цифры, а также пиробел. Разве это не допустимо? Чего в шаблоне не должно быть? | |
|
|
|
|
|
|
|
для: Владимир55
(18.07.2010 в 11:26)
| | Нет. Кроме этого, в $val всё-таки должен быть шаблон для движка PCRE. Если в шаблоне будет что то не так, конечно же работать не будет. | |
|
|
|
|
|
|
|
для: sms-send
(18.07.2010 в 11:21)
| | Обе переменные строковые и обе в формате utf8. Это подходящие условия? | |
|
|
|
|
|
|
|
для: Владимир55
(18.07.2010 в 11:15)
| | Корректно при любых $val - такого не бывает. В $val должна быть строка - корректный шаблон PCRE, в $name должна быть строка в кодировке utf8, тогда так:
<?php
$name = preg_replace ('/'.str_replace('/', '\\/', $val)."/ui", "***", $name);
|
| |
|
|
|
|
|
|
|
для: sms-send
(18.07.2010 в 11:08)
| | Для меня регулярки хуже темного леса.
Вот как конкретно нужно написать это выражение, что бы быть уверенным, что оно будет правильно выполняться при любых значениях переменных $val и $name?
<?php
$name = preg_replace ("/$val/ui", "***", $name);
|
| |
|
|
|
|
|
|
|
для: Владимир55
(18.07.2010 в 11:05)
| | Ну да, но с такой логикой с программированием вообще лучше не связываться, а то что-нибудь проглядишь, не заэкранируешь... ))
Есть правила, их нужно всего лишь соблюдать. | |
|
|
|
|
|
|
|
для: sms-send
(18.07.2010 в 10:57)
| | Что-нибудь проглядишь, не заэкранируешь и на тесте дефект не обнаружишь, а потом он где-нибудь выползет и тогда в масштабах системы попробуй разберись! | |
|
|
|
|