то есть вот например, строка
$str='куда да вода да' и нужно заменить только все слово 'да' на 'нет'
после замены должно быть $str='куда нет вода нет'
чтоб при этом остальные слова не менялись -> вода вонет
Спустя 32 минуты, 35 секунд (29.09.2012 - 21:31) Игорь_Vasinsky написал(а):
preg_replace()
Спустя 36 секунд (29.09.2012 - 21:31) rooor написал(а):
думаю вариантов тут много, мой велосипед такой -
echo str_replace(" да", " нет", "куда да вода да");
Спустя 45 секунд (29.09.2012 - 21:32) h234 написал(а):
$str = preg_replace("/\bда\b/u","нет","куда да вода да");
echo $str;
\b - это граница слова
Спустя 2 минуты, 20 секунд (29.09.2012 - 21:34) Snake22 написал(а):
спасибо.
а ещё, как сделать это без учета регистра?
а то если ДА в строке "куда ДА вода да" написать большими ,то уже не заменяет если в условии замены маленькими прописано
а ещё, как сделать это без учета регистра?
а то если ДА в строке "куда ДА вода да" написать большими ,то уже не заменяет если в условии замены маленькими прописано
Спустя 3 минуты, 49 секунд (29.09.2012 - 21:38) rooor написал(а):
preg_replace("/\bда\b/iu","нет","куда ДА вода да");:)
Спустя 2 минуты, 29 секунд (29.09.2012 - 21:41) Игорь_Vasinsky написал(а):
Спустя 1 минута, 26 секунд (29.09.2012 - 21:42) Snake22 написал(а):
rooor спасибо
Спустя 8 секунд (29.09.2012 - 21:42) killer8080 написал(а):
Цитата (h234 @ 29.09.2012 - 21:32) |
\b - это граница слова |
только с кириллицей траблы
Спустя 3 минуты, 48 секунд (29.09.2012 - 21:46) h234 написал(а):
Цитата (killer8080 @ 29.09.2012 - 18:42) | ||
только с кириллицей траблы |
for example?
Спустя 1 минута, 1 секунда (29.09.2012 - 21:47) killer8080 написал(а):
Цитата (h234 @ 29.09.2012 - 21:46) |
for example? |
запусти свой код
Спустя 7 минут, 23 секунды (29.09.2012 - 21:54) h234 написал(а):
Ну, все прекрасно отработало!
Кодировка utf-8
Кодировка utf-8
Спустя 7 минут, 5 секунд (29.09.2012 - 22:02) killer8080 написал(а):
Цитата (h234 @ 29.09.2012 - 21:54) |
Ну, все прекрасно отработало! Кодировка utf-8 |
А у меня нет, и на большинстве хостингов то же не будет работать.
Кстати, на чем проверял?
Спустя 2 минуты, 30 секунд (29.09.2012 - 22:04) Игорь_Vasinsky написал(а):
u - поможет.
Спустя 2 минуты, 3 секунды (29.09.2012 - 22:06) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 29.09.2012 - 22:04) |
u - поможет. |
Спустя 1 минута, 49 секунд (29.09.2012 - 22:08) Игорь_Vasinsky написал(а):
незнай. при правильной кодировке файла, заголовке. нухной кодировке вх. данный - работает.
Спустя 3 минуты, 50 секунд (29.09.2012 - 22:12) Snake22 написал(а):
блин,однако да в новой версии php кажется работает u а в старой нет. покрайней мере на локальном серве все норм, а на сайте, старый пых, и там тока с английскими буквами заменяет
Спустя 1 минута, 33 секунды (29.09.2012 - 22:13) Игорь_Vasinsky написал(а):
u -тут не причём. он вместе с функцией появился)
Спустя 1 минута, 23 секунды (29.09.2012 - 22:15) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 29.09.2012 - 22:08) |
незнай. при правильной кодировке файла, заголовке. нухной кодировке вх. данный - работает. |
ни в кодировке дело.
Версия php какая? У меня 5.3.3 под дебианом не работает, так же не работало и в денвере 5.2.x
Вот еще цитата из мана
http://ua2.php.net/manual/ru/regexp.refere...cape.php#102868
Цитата |
Beware that \b may not necessarily be Unicode aware: <?php echo preg_replace('/\\b/u', '#', 'gonzález'); ?> ... prints "#gonzález#" or "#gonz#á#lez#" depending on the platform. (It appears to work as expected in latest PHP versions.) |
Спустя 57 секунд (29.09.2012 - 22:16) killer8080 написал(а):
Цитата (Snake22 @ 29.09.2012 - 22:12) |
а на сайте, старый пых, и там тока с английскими буквами заменяет |
для обхода этих граблей. можно использовать "утверждения"
Спустя 1 минута, 46 секунд (29.09.2012 - 22:17) Игорь_Vasinsky написал(а):
а.. может. не спорю. влом версию ща глядеть.
оф. баг? а чё не фиксят?
оф. баг? а чё не фиксят?
Спустя 3 минуты, 44 секунды (29.09.2012 - 22:21) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 29.09.2012 - 22:17) |
оф. баг? а чё не фиксят? |
Ну раз у кого то работает, наверно все таки фиксят, потому я и хотел узнать версию пыха, где работает
Snake22
держи универсальный вариант
$str = preg_replace('#(?<!\S)да(?!\S)#iu','нет','ДА куда да-да вода да');
Спустя 3 минуты, 31 секунда (29.09.2012 - 22:25) h234 написал(а):
Да уж, точно!
Проверил на 4 хостингах. Нигде не отработал корректно, кроме локального компа с Денвером 3 (php 5.3.13)
Проверил на 4 хостингах. Нигде не отработал корректно, кроме локального компа с Денвером 3 (php 5.3.13)
Спустя 16 секунд (29.09.2012 - 22:25) Snake22 написал(а):
во спасибо большое.
теперь всё точно работает
теперь всё точно работает
Спустя 3 минуты, 48 секунд (29.09.2012 - 22:29) killer8080 написал(а):
h234
когда то где то читал, что это связано с опциями локали при компиляции PCRE, но в мануале подтверждения не нашел. Фиг его знает
когда то где то читал, что это связано с опциями локали при компиляции PCRE, но в мануале подтверждения не нашел. Фиг его знает
Спустя 50 минут, 43 секунды (29.09.2012 - 23:19) Zzepish написал(а):
h234
чуваааак, огромное спасибо) 100 лет искал \b
чуваааак, огромное спасибо) 100 лет искал \b
Спустя 7 дней, 20 часов, 26 минут, 12 секунд (7.10.2012 - 19:46) Snake22 написал(а):
Цитата (killer8080 @ 29.09.2012 - 22:21) | ||
Snake22 держи универсальный вариант $str = preg_replace('#(?<!\S)да(?!\S)#iu','нет','ДА куда да-да вода да'); |
Нужна ваша помощь опять :o
такой косяк обнаружил. если перед заменяемым словом стоит "ентер" то слово почему то не заменяется.
то есть
вот если такого вида текст
[enter] //тут типа пустая строка,нажат ентр
[enter] // тут тоже
СЛОВО
то не заменится
Спустя 7 минут, 39 секунд (7.10.2012 - 19:53) Snake22 написал(а):
а ошибся. отбой.
прост у мя скриптик перед отправкой заменяет перевод каретки на <br> и там получается сливается <br>со словом,пробел добавил и всё ок.
прост у мя скриптик перед отправкой заменяет перевод каретки на <br> и там получается сливается <br>со словом,пробел добавил и всё ок.