php

123
M
На сайте с 20.08.2004
Offline
376
#11
[umka:
;15524304]setlocale(LC_CTYPE,"ru_RU.CP1251");

<?

setlocale(LC_CTYPE,"ru_RU.CP1251");

$txt = "бля вобля бляха бля употреблять fff тыбля";

echo $txt."<br>";

$txt = preg_replace("#\bбля\b#i", "ХХХ", $txt);

$txt = preg_replace("#\bfff\b#i", "FFF", $txt);

echo $txt."<br>";

?>

результат

бля вобля бляха бля употреблять fff тыбля

бля вобля бляха бля употреблять FFF тыбля

---------- Добавлено 18.03.2018 в 10:25 ----------

JonnyB:
Ну уберите u, у меня просто utf-8

я обязательно попробую. просто последовательно разбираюсь с вашими советами да и читаю про утверждения

---------- Добавлено 18.03.2018 в 10:29 ----------

JonnyB,

спасибо. сработало...

---------- Добавлено 18.03.2018 в 10:32 ----------

Кому смог репку дал. Но одни и те же так часто мне помогают, или я так редко прошу помощи что не всем дает возможность ее поставить!

Спасибо за помощь! Утверждения это интересно!

отец сыночка, лапочки дочки и еще одного сыночка
M
На сайте с 20.08.2004
Offline
376
#12
JonnyB:
$txt = preg_replace('/(?:(?<=[^а-я])|^)бля(?=(?:[^а-я]|$))/iuU', 'пип', $txt);

по логике \i - нечувствительность выражения к регистру

но в примере $txt = $txt1 = "бля употреблять бляху бля вобля бля Бля БЛЯ употребля";

Бля и БЛЯ не заменятся... подскажите почему. я что-то не так понимаю?

добавил a-zа-яёA-ZА-ЯЁ но оно не будет влиять на я])|^)бля(?=(?

Дмитрий
На сайте с 23.08.2006
Offline
199
#13

Скиньте полный пример, где у вас не работает замена

Разрабатываю и автоматизирую на php http://jonnyb.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#14
Miracle:
Бля и БЛЯ не заменятся... подскажите почему. я что-то не так понимаю?

Антиматом открываете ящик пандоры:) Нет никого более изобретательного, чем матерщинники некоторый мат которых запикивают автоматом.

б.ля, 6ля, бббллляяяя. blya, bIyа. Мы как-то на паре форумов пробовали вводить антимат, после введения больше времени уходило на допиливание антимата, чем раньше уходило на простую раздачу банов 😂

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
[umka]
На сайте с 25.05.2008
Offline
456
#15

Регистронезависимое сравнение и пр. операции возможны только при правильно настроенной локали.

Разберётесь с локалью — не будет проблем с регистрами, диакритическими знаками и т.п., и не нужно будет громоздить трёхэтажные регулярки.

Лог в помощь!
S
На сайте с 30.09.2016
Offline
469
#16

А лучше переходить на UTF-8. Пусть будет больше байтов, зато меньше проблем.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
dma84
На сайте с 21.04.2009
Offline
168
#17

Код заменяет только целые слова.

Это для UTF, для 1251 просто удалить модификатор 'u'


$txt = 'В этом тесте слово извени надо писать с буквой и. А fff должно стать bbb';
echo $txt,'<br>';
$txt = preg_replace('@(?<!\pL)(извени(?!\pL))@iu', 'извини', $txt);
echo $txt,'<br>';
$txt = preg_replace("@(?<!\pL)(fff(?!\pL))@iu", "bbb", $txt);
echo $txt;
M
На сайте с 20.08.2004
Offline
376
#18
<?
$txt = $txt1 = "бля употреблять бляху бля вобля бля Бля БЛЯ употребля";
echo $txt."<br>";
$txt = preg_replace('/(?:(?<=[^a-zа-яёA-ZА-ЯЁ])|^)бля(?=(?:[^a-zа-яёA-ZА-ЯЁ]|$))/i', 'пип', $txt);
echo $txt."<br>";

?>

результат

бля употреблять бляху бля вобля бля Бля БЛЯ употребля

пип употреблять бляху пип вобля пип Бля БЛЯ употребля

Замена не для матов, просто так сложилось что проще показывать на них ))

---------- Добавлено 19.03.2018 в 06:53 ----------

<?
setlocale(LC_CTYPE,"ru_RU.CP1251");
$txt = $txt1 = "бля употреблять бляху бля вобля бля Бля БЛЯ употребля";
echo $txt."<br>";
$txt = preg_replace('/(?:(?<=[^a-zа-яёA-ZА-ЯЁ])|^)бля(?=(?:[^a-zа-яёA-ZА-ЯЁ]|$))/i', 'пип', $txt);
echo $txt."<br>";

?>

тоже не работает.

dma84
На сайте с 21.04.2009
Offline
168
#19
Miracle:
тоже не работает.

Так что в итоге-то необходимо?

(?:(?<=[^a-zа-яёA-ZА-ЯЁ])|^) - это шедевр)))

M
На сайте с 20.08.2004
Offline
376
#20
dma84:
Так что в итоге-то необходимо?

выше написано.

dma84:
(??<=[^a-zа-яёA-ZА-ЯЁ])|^) - это шедевр)))

что вас смущает? если вы владеете достаточными знаниями аргументируйте , а если вы чего-то не понимаете - тогда проходите мимо!

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий