Иссус с эмодзи в массиве

В этом коде, когда я использую «:-)», эмодзи не отображается в выходных данных.

Но при использовании «1f60a» ИЛИ «1f60c» ИЛИ «e252» отображаются эмодзи. В чем проблема?

<?php
$emoji_url = "http://coremobile.ir/images_smileys";
$emoji_style = "";
$emoji_code = array(
":-)",
"1f60a",
"1f60c",
"e252");

$emoji_img = array(
'<img src="'.$emoji_url.'/1f60a.png" '.$emoji_style.'>',
'<img src="'.$emoji_url.'/1f60a.png" '.$emoji_style.'>',
'<img src="'.$emoji_url.'/1f60c.png" '.$emoji_style.'>',
'<img src="'.$emoji_url.'/e252.png" '.$emoji_style.'>'
);

$ret = 'This Test :-)  1f60a';
$ret = str_replace($emoji_code, $emoji_img, $ret);
echo $ret;
?>

2

Решение

Это должно работать для вас:

(Просто используйте strtr() вместо str_replace(), чтобы он не проходил через строку несколько раз)

$ret = strtr($ret, array_combine($emoji_code, $emoji_img));

выход:

Этот тест введите описание изображения здесьвведите описание изображения здесь

Другой не работал, потому что он заменял каждый матч для первой замены, а затем второй и так далее.

0 заменено:

This Test :-)  1f60a
//^^^ match

сначала заменил:

This Test <img src="http://coremobile.ir/images_smileys/1f60a.png" > 1f60a
//^^^^^ match  ^^^^^ match

второй заменил:

This Test <img src="http://coremobile.ir/images_smileys/<img src="http://coremobile.ir/images_smileys/1f60a.png" >.png" >  <img src="http://coremobile.ir/images_smileys/1f60a.png" >
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]