public function parseSmiley($text) { $smilies = Smiley::getAll(); $match = []; $replace = []; foreach ($smilies as $smiley) { $match[] = '(?<=^|[\\n .])' . preg_quote($smiley['code'], '#') . '(?![^<>]*>)'; $replace[] = '<!-- s' . $smiley['code'] . ' --><img src="{SMILIES_PATH}/' . $smiley['smiley_url'] . '" alt="' . $smiley['code'] . '" title="' . $smiley['emotion'] . '" /><!-- s' . $smiley['code'] . ' -->'; } if (sizeof($match)) { // Make sure the delimiter # is added in front and at the end of every element within $match $text = trim(preg_replace(explode(chr(0), '#' . implode('#' . chr(0) . '#', $match) . '#'), $replace, $text)); } return $text; }