Skip to content

Instantly share code, notes, and snippets.

@Dmi3yy
Created January 28, 2014 07:34
Show Gist options
  • Save Dmi3yy/8663590 to your computer and use it in GitHub Desktop.
Save Dmi3yy/8663590 to your computer and use it in GitHub Desktop.
TSVpreReplace - Замена квадратных скобок в вызовах сниппетов, плейсхолдерах и TV
/**
* 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(
'&#91;',
'&#93;'
),'$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(
'&#91;',
'&#93;'
), $modx->documentObject[$value]);
}
}
@AgelxNash
Copy link

  1. Флаг e в preg_replace желательно не использовать, т.к. с php версии 5.5 он будет deprecated + при желании можно выполнить произвольный код
  2. Эта регулярка обломается на вложенных тегах. Вот тут более продвинутая версия для извлечения текста между тегами.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment