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

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

Last change on this file since 6993 was 6993, checked in by ebihara, 12 years ago

#1968:head要素では絵文字を変換しないようにした

File size: 1.6 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, option, img, head を退避
16        $patterns = array(
17            '/<input[^>]+>/is',
18            '/<textarea.*?<\/textarea>/is',
19            '/<option.*?<\/option>/is',
20            '/<img[^>]+>/is',
21            '/<head.*?<\/head>/is',
22        );
23
24        list ($list, $tpl_output) = _smarty_outputfilter_pne_display_emoji_replace($patterns, $tpl_output);
25    }
26
27    // 絵文字変換
28    $tpl_output = emoji_convert($tpl_output);
29
30    if (empty($GLOBALS['__Framework']['carrier'])) {
31        // input, textarea, option, img, head を元に戻す
32        $tpl_output = str_replace(array_keys($list), array_values($list), $tpl_output);
33    }
34
35    return $tpl_output;
36}
37
38function _smarty_outputfilter_pne_display_emoji_replace($patterns, $subject)
39{
40    $i = 0;
41    $list = array();
42
43    foreach ($patterns as $pattern) {
44        if (preg_match_all($pattern, $subject, $matches)) {
45            foreach ($matches[0] as $match) {
46                $replacement = '<<<NOEMOJI:'.$i.'>>>';
47                $list[$replacement] = $match;
48                $i++;
49            }
50        }
51    }
52
53    $subject = str_replace(array_values($list), array_keys($list), $subject);
54
55    return array($list, $subject);
56}
57
58?>
Note: See TracBrowser for help on using the repository browser.