我正在尝试使用php将原始字符串转换为下面的结果。

ORIGINAL: "The quick <font color="brown">brown</font> fox jumps over the lazy dog"

RESULT:"god yzal eht revo spmuj xof <font color="brown">nworb</font> kciuq ehT"

我到目前为止所做的解释如下。
首先,将html标记从原始标记中剥离。
$originalStr = "The quick <font color='brown'>brown</font> fox jumps over the lazy dog";

$stripTags = strip_tags($originalStr);

结果棕色狐狸跳到了懒狗身上,
其次,我使用strrev函数将结果和单词“brown”颠倒过来
$reverseStr = strrev($stripTags);
$brown = strrev("brown");

这是给上帝的结果,伊扎尔,eht,revo,spmuj,xof,nworb,kciuq,eht
第三,我试图使用str_replace函数从reversestr中找到$brown,并用$openfont$brown$closefont替换它,如下所示。
$openFont = "<font color='brown'>";
$closeFont = "</font>";

$result = str_replace($brown, $openFont.$brown.$closeFont, $reverseStr);
echo "result -->" . $result . "<br/><br/><br/>";

这一结果与上帝伊扎尔eht revo spmuj xof kciuq eht的结果不一样。
Font()标记中的特殊字符似乎是阻止str_replace替换字符串的问题。
$result = str_replace($brown, "TEST", $reverseStr);
echo "result -->" . $result . "<br/><br/><br/>";

这是Yzal-Eht Revo Spmuj Xof测试Kciuq-Eht的结果
有人知道str_u replace不接受特殊字符吗?知道我该怎么解决这个问题吗?
如果有别的办法解决这个问题的话,我也很高兴听到你的建议。
(*这是我在算法测试网站上试图解决的实际问题之一)
更新:我觉得愚蠢的字体标签是哪里。因为标签是用来改变字体颜色的,所以它在一开始就很完美。非常感谢大家抽出时间!

最佳答案

如果是我,我会做这个(充分测试):

// Original string
$str = 'The quick <font color="brown">brown</font> fox jumps over the lazy dog';

// Strip the font tag
$str = strip_tags( $str );

// Convert string to array
$arr = str_split( $str );

// Reverse the array
$rra = array_reverse( $arr );

// Convert array back to string
$str = implode( $rra );

// Add font tag back in
$str = str_replace('nworb', '<font color="brown">nworb</font>', $str);


// Result
echo $str;

10-07 20:30