gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

modifier.regex_replace.php (1575B)


      1 <?php
      2 /**
      3  * Smarty plugin
      4  *
      5  * @package    Smarty
      6  * @subpackage PluginsModifier
      7  */
      8 
      9 /**
     10  * Smarty regex_replace modifier plugin
     11  * Type:     modifier<br>
     12  * Name:     regex_replace<br>
     13  * Purpose:  regular expression search/replace
     14  *
     15  * @link    http://smarty.php.net/manual/en/language.modifier.regex.replace.php
     16  *          regex_replace (Smarty online manual)
     17  * @author  Monte Ohrt <monte at ohrt dot com>
     18  *
     19  * @param string       $string  input string
     20  * @param string|array $search  regular expression(s) to search for
     21  * @param string|array $replace string(s) that should be replaced
     22  *
     23  * @return string
     24  */
     25 function smarty_modifier_regex_replace($string, $search, $replace)
     26 {
     27     if (is_array($search)) {
     28         foreach ($search as $idx => $s) {
     29             $search[$idx] = _smarty_regex_replace_check($s);
     30         }
     31     } else {
     32         $search = _smarty_regex_replace_check($search);
     33     }
     34 
     35     return preg_replace($search, $replace, $string);
     36 }
     37 
     38 /**
     39  * @param  string $search string(s) that should be replaced
     40  *
     41  * @return string
     42  * @ignore
     43  */
     44 function _smarty_regex_replace_check($search)
     45 {
     46     // null-byte injection detection
     47     // anything behind the first null-byte is ignored
     48     if (($pos = strpos($search, "\0")) !== false) {
     49         $search = substr($search, 0, $pos);
     50     }
     51     // remove eval-modifier from $search
     52     if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) {
     53         $search = substr($search, 0, - strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]);
     54     }
     55 
     56     return $search;
     57 }