Created
January 28, 2014 07:34
-
-
Save Dmi3yy/8663590 to your computer and use it in GitHub Desktop.
TSVpreReplace - Замена квадратных скобок в вызовах сниппетов, плейсхолдерах и TV
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* TSVpreReplace | |
* | |
* Замена квадратных скобок в вызовах сниппетов, плейсхолдерах и TV, находящихся между тегами <pre></pre> | |
* | |
* @author Serg24, update by Boomka | |
* @category plugin | |
* @version 1.0 | |
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) | |
* @internal @events OnLoadWebDocument | |
* @internal @modx_category | |
* @internal @installset base | |
* @internal &tv=TV;textarea;photo | |
*/ | |
if (is_array($modx->documentObject)){ | |
foreach( $modx->documentObject as $key=>$value){ | |
$modx->documentObject[$key] = preg_replace('!<pre(.*?)>(.*?)</pre>!ise', "stripslashes('<pre$1>' . str_replace(array( | |
'[', | |
']' | |
),array( | |
'[', | |
']' | |
),'$2') . '</pre>')", $value); | |
} | |
} | |
$tv=str_replace(' ','',$tv); | |
$array=explode(',',$tv); | |
if (is_array($array)){ | |
foreach( $array as $value){ | |
$modx->documentObject[$value] = str_replace(array( | |
'[', | |
']' | |
),array( | |
'[', | |
']' | |
), $modx->documentObject[$value]); | |
} | |
} | |
AgelxNash
commented
Jan 28, 2014
- Флаг e в preg_replace желательно не использовать, т.к. с php версии 5.5 он будет deprecated + при желании можно выполнить произвольный код
- Эта регулярка обломается на вложенных тегах. Вот тут более продвинутая версия для извлечения текста между тегами.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment