Здравствуйте. Есть строка вида: 2,12,55,29,22,10,28 или 12,55,29,22,10,2
Каким образом заменить только цифру 2 ?
str_replace
меняет цифру 2 - везде. А нужно только там где она одна (2).
Другой вариант с регуляркой:
<?php
$s = '2,12,55,2,29,22,10,2';
echo preg_replace('/(?<!\d)2(?!\d)/', 'TWO', $s);
Использует негативный просмотр назад (?<!\d)
и вперед (?!\d)
. В обоих случаях проверяется отсутствие цифры.
UPD
Для строки состоящей из цифр и запятых подойдет еще вариант с границей слов:
<?php
$s = '2,12,55,2,29,22,10,2';
echo preg_replace('/\b2\b/', 'TWO', $s);
Возможно попробовать такой вариант:
$str = '2,12,55,29,22,10,28';
$search = 2;
$replacement = 11111111;
$arr = explode(',', $str);
$str = implode(',', array_map(function($el) use ($search, $replacement) {
return ($el == $search) ? $replacement: $el;
}, $arr));
echo $str;
Т.е. разделяем строку на составные части, далее пробегаем и изменяем нужный элемент на то, что хочешь, обратно склеиваем в строку.
Не самый эффективный способ, но всё-таки...
С помощью preg_replace можно выбрать число, окружённое не цифрами(\D)
$s = '2,12,55,2,29,22,10,2';
echo preg_replace('/(^|\D)2(\D|$)/', '$1TWO$2', $s);
// TWO,12,55,TWO,29,22,10,TWO
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется большой json-файлНа json_decode уходит до 4х секунд и такая скорость очень не устраивает, тем более что потребности именно парсить его и получать...
Имеется изолированная полностью контролируемая локальная сеть с машинами, вопросы безопасности не имеют значенияЕще есть несколько комовских...