Как изменить цвет первых 2 букв с помощью preg_replace

1

Вот мой код, но он меняет только первый символ строки

$string = 'Earrold Imperial Valdez';

$text = preg_replace('/(\b[a-z])/i','<span style="color:red;">\1</span>',$text);  
echo $text; 
Теги:
preg-replace

2 ответа

1
Лучший ответ

Просто возьмите 2 символа, например

$text = preg_replace('/^([a-z]{2})/i','<span style="color:red;">\1</span>',$string);  
                     //↑      ^^^ Quantifier: {2} Exactly 2 time
                     //| assert position at start of the string

Или, если вы хотите сделать это без регулярного выражения, вы можете использовать substr(), например

$text = '<span style="color:red;">' . substr($string, 0, 2) . '</span>' . substr($string, 2);  
  • 0
    Спасибо, но как насчет, если я хочу изменить 2 символа каждое слово. потому что это только изменить первые 2 символа первого слова, а другие слова остаются неизменными.
  • 0
    @Earrold Тогда просто не используйте якорь и сохраняйте границы слов в начале регулярного выражения.
Показать ещё 1 комментарий
0

Ошибка в вашем регулярном выражении. [az] влияет только на один символ, потому что нет множителя. Чтобы изменить первые 2, вам нужно использовать квантификатор - {}.

Изменение вашего RegExp на /\b[az]{2})/i должно исправить его.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню