Большинство функций замены смайликов структурированы следующим образом:
array(
':-)' => 'happy', ':)' => 'happy', ':D' => 'happy', ...
)
Мне это показалось немного излишним (особенно если мне не нужно проводить различие между «счастливыми», такими как :-) и ОЧЕНЬ счастливыми, такими как :-D. Итак, я придумал это:
$tweet = 'RT @MW_AAPL: Apple officially rich :-) LOLWUT #ipod :(';
function emoticons($tweet) {
$emoticons = array(
'HAPPY' => array(':-)', ':-D', ':D', '(-:', '(:'),
'SAD' => array(':-(', ':('),
'WINK' => array(';-)', ';)'),
);
foreach ($emoticons as $emotion) {
foreach ($emotion as $pattern) {
$tweet = str_replace($pattern, key($emoticons), $tweet);
}
}
return $tweet;
}
Вывод должен быть:
RT @MW_AAPL: Apple officially rich HAPPY LOLWUT #ipod SAD
Однако я не знаю, как вызвать правильный ключ из $ emoticons. В моем коде, кажется, всегда заменить любой смайлик с ключевым словом "HAPPY".
(1) Если вы видите, что не так с моим кодом, пожалуйста, дайте мне знать. Любая помощь будет принята с благодарностью :-)
(2) Я использую здесь str_replace, в то время как многие другие функции используют preg_replace. В чем было бы преимущество этого?