source: branches/version-2_5-dev/data/smarty_extends/modifier.nl2br_html.php @ 18234

Revision 18234, 1.1 KB checked in by Seasoft, 12 years ago (diff)

#528(改行コードが混在している)

  • SVN属性の変更。ただし、以下は除外。
    • /data/module
    • /data/pdf
    • /html/test
  • Property svn:eol-style set to LF
  • Property svn:mime-type set to text/x-httpd-php; charset=UTF-8
Line 
1<?php
2/**
3 * Smarty plugin
4 * @package Smarty
5 * @subpackage plugins
6 */
7
8
9/**
10 * Smarty plugin
11 *
12 * Type:     modifier<br>
13 * Name:     nl2br_html<br>
14 * Date:     Sep 20, 2008
15 * Purpose:  convert \r\n, \r or \n to <<br />>. However, the HTML tag is considered.
16 * Example:  {$text|nl2br_html}
17 * @author   Seasoft 塚田将久
18 * @param string
19 * @return string
20 */
21function smarty_modifier_nl2br_html($string) {
22    $lines = preg_split('/(\\r\\n|\\r|\\n)/', $string);
23    $keys = array_keys($lines);
24    $last_key = end($keys); // 最終行のキー
25    foreach ($keys as $key) {
26        if ($key == $last_key) continue; // 最終行はスキップ
27        $line =& $lines[$key];
28        if (
29            !preg_match('/<\/(address|blockquote|caption|center|col|colgroup|dd|del|dir|div|dl|dt|fieldset|form|frame|frameset|h[1-6]|hr|ins|isindex|legend|li|menu|noframes|noscript|ol|optgroup|option|p|pre|table|tbody|td|tfoot|th|thead|tr|ul)>$/i', $line)
30            && !preg_match('/<[a-z0-9]+\s*[^<]*\/?>$/i', $line)
31        ) {
32            $line .= '<br />';
33        }
34        $line .= "\n";
35    }
36    unset($line);
37   
38    return implode('', $lines);
39}
40
41?>
Note: See TracBrowser for help on using the repository browser.