Я пытаюсь изменить цвет текста в моей строке:
моя строка:
$message="I have a [red][car]";
Я хочу зафиксировать значения внутри первого [...] и второго [...], а затем использовать его в
<b style='color:color'>car</b>
изменить цвет текста в соответствии со значением первого [...]
Пока у меня есть:
echo preg_replace("/\[([^\]]+)\]\[([^\]+])\]/i","<b style='color:$1'>$2</b>",$message);
Но он не работает, строка orignal возвращается как выход. Я не знаю, где мое регулярное выражение не получилось.
Пожалуйста помоги!
Исправленное регулярное выражение:
'/\[([^\]]+)]\[([^\]]+)]/'
Обратите внимание, что вам не нужно скрывать ]
вне класса символов и не нужно в модификаторе /i
, поскольку в вашем шаблоне нет букв. Кроме того, чтобы должным образом избежать специальных символов регулярных выражений, вам нужно либо удвоить escape файлы в двойной кавычки, либо использовать одну строку с кавычками.
$message="I have a [red][car]";
echo preg_replace('/\[([^\]]+)]\[([^\]]+)]/',"<b style='color:$1'>$2</b>",$message);
// => I have a <b style='color:red'>car</b>
$message="I have a [red][car]";
echo preg_replace("/[^\[]+\[([^\]]+)\]\[([^\]]+)\]/i","<b style='color:$1'>$2</b>",$message);
]
: используйте'/\[([^\]]+)\]\[([^\]]+)\]/'