ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/trunk/webapp/lib/smarty_plugins/outputfilter.pne_display_emoji.php @ 6341

Last change on this file since 6341 was 6341, checked in by ogawa, 12 years ago

#2187:Smartyのdefault_modifiersが過剰に適用されるのを改善(仮実装

File size: 1.5 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * 「[c:NNN]」形式の絵文字コードをHTML表示用に変換するアウトプットフィルタ
9 */
10function smarty_outputfilter_pne_display_emoji($tpl_output, &$smarty)
11{
12    $list = array();
13
14    if (empty($GLOBALS['__Framework']['carrier'])) {
15        // input, textarea, img を退避
16        $patterns = array(
17            '/<input[^>]+>/is',
18            '/<textarea.*?<\/textarea>/is',
19            '/<img[^>]+>/is',
20        );
21
22        list ($list, $tpl_output) = _smarty_outputfilter_pne_display_emoji_replace($patterns, $tpl_output);
23    }
24
25    // 絵文字変換
26    $tpl_output = emoji_convert($tpl_output);
27
28    if (empty($GLOBALS['__Framework']['carrier'])) {
29        // input, textarea を元に戻す
30        $tpl_output = str_replace(array_keys($list), array_values($list), $tpl_output);
31    }
32
33    return $tpl_output;
34}
35
36function _smarty_outputfilter_pne_display_emoji_replace($patterns, $subject)
37{
38    $i = 0;
39    $list = array();
40
41    foreach ($patterns as $pattern) {
42        if (preg_match_all($pattern, $subject, $matches)) {
43            foreach ($matches[0] as $match) {
44                $replacement = '<<<NOEMOJI:'.$i.'>>>';
45                $list[$replacement] = $match;
46                $i++;
47            }
48        }
49    }
50
51    $subject = str_replace(array_values($list), array_keys($list), $subject);
52
53    return array($list, $subject);
54}
55
56?>
Note: See TracBrowser for help on using the repository browser.