たとえば、次のようなものがあるとします。
$string = "^4Hello World ^5Foo^8Bar";
私は現在、キャレットと隣接する数字を置き換えるために次の関数を使用しています。これは、私が望むものに最も近いものです。
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>
列の先頭に不要なものを追加しており、終了タグを閉じていません。
これを機能させる方法はありますか?
ありがとう、ベン。