new \Twig_Filter_Method($this, 'comment', array('is_safe' => array('html'))),
'post' => new \Twig_Filter_Method($this, 'post', array('is_safe' => array('html'))),
);
}
public function comment($text)
{
$text = htmlspecialchars(trim($text)).' ';
$text = preg_replace_callback(
'`(s?(http|ftp|irc)+s?://[^\s\)]+)(\s|\))+`iU',
function($data) {
return sprintf('%s%s', htmlspecialchars($data[1]), htmlspecialchars($data[1]), $data[3]);
},
$text
);
return nl2br($text);
}
public function post($text)
{
$text = preg_replace('`
]*)>(.*)
]*)>`isU', function($data) { if(preg_match('`^[ ]+`', $data[1])) { return ''.nl2br(trim($data[2])).'
'; } elseif(isset($data[1]) && $data[1] === '') { return ''.nl2br(trim($data[2])).'
'; } else { return $data[0]; } }, $text ); $text = preg_replace_callback('`(.*)`isU', function($data) { return sprintf('
', nl2br(trim($data[2])), $data[1]); }, $text ); $text = preg_replace_callback( '`%s
%s
(.*)`isU', function($data) { return sprintf('
', nl2br(trim($data[2])), $data[1]); }, $text ); $text = preg_replace_callback( '`%s
%s
(.*)`isU', function($data) { return sprintf('
', nl2br(trim($data[1]))); }, $text ); $text = preg_replace_callback( '``isU', function($data) { return sprintf('', ' data-dimension="destroy" '.(trim($data[1]))); }, $text ); $text = preg_replace_callback( '`%s