Допустим, у меня есть следующие для примера в целях:Замена нескольких частей строки
$string = "^4Hello World ^5Foo^8Bar";
Я в настоящее время использую следующую функцию для замены CARETS и примыкающие число, которое ближе всего я мог добраться до что я хотел.
function addColours($input) {
$var = $input;
$var = str_replace('^0', '</span><span style="color: #000000">', $var);
$var = str_replace('^1', '</span><span style="color: #ff0000">', $var);
$var = str_replace('^2', '</span><span style="color: #00ff00">', $var);
$var = str_replace('^3', '</span><span style="color: #ffff00">', $var);
$var = str_replace('^4', '</span><span style="color: #0000ff">', $var);
$var = str_replace('^5', '</span><span style="color: #00ffff">', $var);
$var = str_replace('^6', '</span><span style="color: #ff00ff">', $var);
$var = str_replace('^7', '</span><span style="color: #ffffff">', $var);
$var = str_replace('^8', '</span><span style="color: #CC9933">', $var);
$var = str_replace('^9', '</span><span style="color: #8D8D8D">', $var);
return $var;
}
Это вернуло бы следующие строки.
</span><span style="color: #0000ff">Hello World </span><span style="color: #00ffff">Foo</span><span style="color: #CC9933">Bar
Он отлично работает для средней части строки, но, очевидно, это добавление ненужного </span>
в начале строки, и это не закрывает закрывающий тег.
Есть ли способ сделать это!
Спасибо, Бен.
почему бы не вместо 'return $ var;' просто сделать 'return $ var. ' '; '? – alfasin
также, как насчет первого закрытия '' (что на самом деле ничего не закрывает)? – alfasin
Я думаю, лучшее решение состоит в том, чтобы разбить строку на '\^\ d +' и обернуть каждую часть между тегами span ... –