summaryrefslogtreecommitdiff
path: root/libs/plugins/modifiercompiler.count_characters.php
diff options
context:
space:
mode:
Diffstat (limited to 'libs/plugins/modifiercompiler.count_characters.php')
-rw-r--r--libs/plugins/modifiercompiler.count_characters.php30
1 files changed, 12 insertions, 18 deletions
diff --git a/libs/plugins/modifiercompiler.count_characters.php b/libs/plugins/modifiercompiler.count_characters.php
index 40867f52..ae95fda4 100644
--- a/libs/plugins/modifiercompiler.count_characters.php
+++ b/libs/plugins/modifiercompiler.count_characters.php
@@ -8,32 +8,26 @@
/**
* Smarty count_characters modifier plugin
- *
+ *
* Type: modifier<br>
* Name: count_characteres<br>
* Purpose: count the number of characters in a text
- *
- * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
- * @author Uwe Tews
+ *
+ * @link http://www.smarty.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
+ * @author Uwe Tews
* @param array $params parameters
* @return string with compiled code
*/
function smarty_modifiercompiler_count_characters($params, $compiler)
{
- // mb_ functions available?
- if (function_exists('mb_strlen')) {
- // count also spaces?
- if (isset($params[1]) && $params[1] == 'true') {
- return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? mb_strlen(' . $params[0] . ', SMARTY_RESOURCE_CHAR_SET) : strlen(' . $params[0] . '))';
- }
- return '((mb_detect_encoding(' . $params[0] . ', \'UTF-8, ISO-8859-1\') === \'UTF-8\') ? preg_match_all(\'#[^\s\pZ]#u\', ' . $params[0] . ', $tmp) : preg_match_all(\'/[^\s]/\',' . $params[0] . ', $tmp))';
- } else {
- // count also spaces?
- if (isset($params[1]) && $params[1] == 'true') {
- return 'strlen(' . $params[0] . ')';
- }
- return 'preg_match_all(\'/[^\s]/\',' . $params[0] . ', $tmp)';
- }
+ if (!isset($params[1]) || $params[1] != 'true') {
+ return 'preg_match_all(\'/[^\s]/u\',' . $params[0] . ', $tmp)';
+ }
+ if (SMARTY_MBSTRING /* ^phpunit */&&empty($_SERVER['SMARTY_PHPUNIT_DISABLE_MBSTRING'])/* phpunit$ */) {
+ return 'mb_strlen(' . $params[0] . ', SMARTY_RESOURCE_CHAR_SET)';
+ }
+ // no MBString fallback
+ return 'strlen(' . $params[0] . ')';
}
?> \ No newline at end of file