如何使用带有转义html字符的str_replace

时间:2014-08-27 20:10:11

标签: php str-replace translate

我使用str_replace制作西里尔文本格式数据库。数据库中的文字有一个html代码,例如<br><b>,...我使用str_replace,如下所示:

$cir = array("љ", "њ", "е", "р", "т", "з", "у", "и", "о", "п", "ш", "ђ", "а", "с", "д", "ф", "г", "х", "ј", "к", "л", "ч", "ћ", "ж", "џ", "ц", "в", "б", "н", "м", "Љ", "Њ", "Е", "Р", "Т", "З", "У", "И", "О", "П", "Ш", "Ђ", "А", "С", "Д", "Ф", "Г", "Х", "Ј", "К", "Л", "Ч", "Ћ", "Ж", "Џ", "Ц", "В", "Б", "Н", "М");
    $lat = array("lj", "nj", "e", "r", "t", "z", "u", "i", "o", "p", "š", "đ", "a", "s", "d", "f", "g", "h", "j", "k", "l", "č", "ć", "ž", "dž", "c", "v", "b", "n", "m", "Lj", "Nj", "E", "R", "T", "Z", "U", "I", "O", "P", "Š", "Ć", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Č", "Ć", "Ž", "DŽ", "C", "V", "B", "N", "M");
$out = str_replace($cir,$lat,$txt);
return $out

在功能上。但我有一个问题。 html标签也已翻译,所以我得到<б><и> ...如何从翻译器中转义html代码?

2 个答案:

答案 0 :(得分:0)

每个标记都以&#34;&lt;&#34;并关注&#34;&gt;&#34;。我个人将有主要文本和循环将tru每个字符,我将有一个bool变量开始&#34;真&#34;并改为&#34; false&#34;当我点击&#34;&lt;&#34;并在找到&#34;&gt;&#34;时更改回true主字符串中的char。所以在那之后我将为我的bool变量设置一个if语句,如果是真的我将替换字符,或者它是假的我不会。

答案 1 :(得分:0)

如果您的文本中只有几个html标签,那么您可以将其设置为脏,这意味着您首先替换标签,进行翻译并在之后重新标记标签。 E.g。

$tags = array("<br>","<b>", ...);
$nums = array("<1>","<2>", ...);

$out = str_replace($tags,$nums,$txt);
$out = str_replace($lat,$cir,$out);
$out = str_replace($nums,$tags,$out);

顺便说一下:在你给定的代码中,你用拉丁字母替换西里尔字母而不是反之。所以我把它换了。否则你不应该有问题。