fenom ereplace что не так?

Доброго дня всем! Есть фрагмент подлежащий удалению из кода контента при отдаче в RSS

Пример кода баннера:
<hr>
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- inarticles1 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-999999999999999999999"
     data-ad-slot="222222222222222"
     data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<hr>
Тут www.phpliveregex.com/ опробовал сладующее регулярное выражение
preg_replace("/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is", "", $input_lines);
оно работает — удаляет код без остатка
А при использовании ereplace с тем же выражением ни чего не вырезается ( в чанке test_banner_del приведенный выше код баннера)
{include 'test_banner_del'| ereplace : '/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is':' '}
Может кто подскажет, что я делаю не так.
Вопрос решен.
Т.к. регулярка не затрагивает ни чего кроме вырезаемого баннера, то поступил так:
{set $alltoRSS = $_modx->runSnippet('pdoResources', [
   ....
    ])}
    {$alltoRSS | ereplace : '/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is':' ' }
На самом деле это продолжение мысли высказанной Володей.
Владимир
29 марта 2017, 07:32
modx.pro
2 483
0

Комментарии: 5

Володя
29 марта 2017, 10:54
1
+2
сразу через include не получится.
сначала забейте переменную и потом к ней применяйте модификатор
{var $tmp}
  {include 'test_banner_del'}
{/var}
{$tmp| ereplace : '/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is':' '}
    Владимир
    29 марта 2017, 11:03
    0
    Спасибо, Володя! Да, так работает в случае с чанком.
    Но тогда почему-то в другом чанке
    <item>
    	<title>{$pagetitle | strip_tags}</title>
    	<link>[[+link]]</link>
    	<description>[[+introtext:absURL:cdata]]</description>
    	<pubDate>[[!ShowDate_en? &val=`[[+publishedon]]`]] +0300</pubDate>
    	<guid>[[+link]]</guid>
    	<yandex:full-text>
        {$introtext | strip_tags}
        {$content | ereplace  : '/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is':' '| strip_tags} 
        
    	</yandex:full-text>
    </item>
    тоже самое ни как не хочет
      Владимир
      29 марта 2017, 11:13
      0
      PS
      по аналогии, отдельный документ, где баннер в тексте
      {var $tmp2}
        {5318 | resource : 'content'}
      {/var}
      {$tmp2| ereplace : '/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is':' ' | strip_tags}
      так strip_tags отрабатывает, а регулярка нет…
      Опять же, тут www.phpliveregex.com из текста указанная регулярка все нормально вырезает
        Владимир
        29 марта 2017, 12:44
        0
        Итого, если код баннера вместе с обтекающим текстом запихнуть в ресурс и вызвать
        {5375 | resource : 'content' | ereplace : '/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is':' '| strip_tags}
        — все нормально))
        Ибо проблема не в регулярке, а в том, что на рабочем проекте баннеры вставляются полями ContentBlocks, в полях чанки. Т.е. если из ContentBlocks, то чанк еще не успевает отрабатывать, а регулярка по всему контенту уже прошлась.


        Пляшу с бубном, буду с плагинами играть, пробовал вот так :
        <item>
        	<title>{$pagetitle | strip_tags}</title>
        	<link>[[+link]]</link>
        	<description>[[+introtext:absURL:cdata]]</description>
        	<pubDate>[[!ShowDate_en? &val=`[[+publishedon]]`]] +0300</pubDate>
        	<guid>[[+link]]</guid>
        	<yandex:full-text>
            
            {var $allcontent}
            {$introtext ~~ $content} 
            {/var}
            {$allcontent | ereplace  : '/<ins.*?\<\/ins\>|<script.*?\<\/script\>|<hr>|<!--.*?-->/is':' '| strip_tags}
            
        	</yandex:full-text>
        </item>
        чуда не произошло.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5