Редакция 2 | Только различия | Учитывать пробелы | Содержимое файла | Авторство | Последнее изменение | Открыть журнал | RSS
Редакция 2 | Редакция 10 | ||
---|---|---|---|
1 | <?php
|
1 | <?php
|
2 | /**
|
2 | /**
|
3 | * Smarty plugin
|
3 | * Smarty plugin
|
4 | * @package Smarty
|
4 | * @package Smarty
|
5 | * @subpackage plugins
|
5 | * @subpackage plugins
|
6 | */
|
6 | */
|
7 | 7 | ||
8 | 8 | ||
9 | /**
|
9 | /**
|
10 | * Smarty regex_replace modifier plugin
|
10 | * Smarty regex_replace modifier plugin
|
11 | *
|
11 | *
|
12 | * Type: modifier<br>
|
12 | * Type: modifier<br>
|
13 | * Name: regex_replace<br>
|
13 | * Name: regex_replace<br>
|
14 | * Purpose: regular expression search/replace
|
14 | * Purpose: regular expression search/replace
|
15 | * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
|
15 | * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php
|
16 | * regex_replace (Smarty online manual)
|
16 | * regex_replace (Smarty online manual)
|
17 | * @author Monte Ohrt <monte at ohrt dot com>
|
17 | * @author Monte Ohrt <monte at ohrt dot com>
|
18 | * @param string
|
18 | * @param string
|
19 | * @param string|array
|
19 | * @param string|array
|
20 | * @param string|array
|
20 | * @param string|array
|
21 | * @return string
|
21 | * @return string
|
22 | */
|
22 | */
|
23 | function smarty_modifier_regex_replace($string, $search, $replace) |
23 | function smarty_modifier_regex_replace($string, $search, $replace) |
24 | {
|
24 | {
|
25 | if(is_array($search)) { |
25 | if(is_array($search)) { |
26 | foreach($search as $idx => $s) |
26 | foreach($search as $idx => $s) |
27 | $search[$idx] = _smarty_regex_replace_check($s); |
27 | $search[$idx] = _smarty_regex_replace_check($s); |
28 | } else { |
28 | } else { |
29 | $search = _smarty_regex_replace_check($search); |
29 | $search = _smarty_regex_replace_check($search); |
30 | }
|
30 | }
|
31 | 31 | ||
32 | return preg_replace($search, $replace, $string); |
32 | return preg_replace($search, $replace, $string); |
33 | }
|
33 | }
|
34 | 34 | ||
35 | function _smarty_regex_replace_check($search) |
35 | function _smarty_regex_replace_check($search) |
36 | {
|
36 | {
|
37 | if (($pos = strpos($search,"\0")) !== false) |
37 | if (($pos = strpos($search,"\0")) !== false) |
38 | $search = substr($search,0,$pos); |
38 | $search = substr($search,0,$pos); |
39 | if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { |
39 | if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { |
40 | /* remove eval-modifier from $search */
|
40 | /* remove eval-modifier from $search */
|
41 | $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]); |
41 | $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]); |
42 | }
|
42 | }
|
43 | return $search; |
43 | return $search; |
44 | }
|
44 | }
|
45 | 45 | ||
46 | /* vim: set expandtab: */
|
46 | /* vim: set expandtab: */
|
47 | 47 | ||
48 | ?>
|
48 | ?>
|
49 | 49 |