Помощ за регекс за замяна на нещо между 2 израза

garnet

Well-Known Member
Имам следното

PHP:
бла бла2
<div style="margin-top:20px;" class="ab_text">
бла бла бла
<div class="ab_tooltip" id="sn_tooltip"></div>
бла бла2

като бла бла бла в средата винаги е резлично и може да е каквото и да е и винаги с различна дължина

Как да направя рег екс, който да смени

PHP:
<div style="margin-top:20px;" class="ab_text">
бла бла бла
<div class="ab_tooltip" id="sn_tooltip"></div>

с нещо друго? Това вкл. див таговете:


PHP:
бла бла2
нещо друго
бла бла2




<div style="margin-top:20px;" class="ab_text">
и
<div class="ab_tooltip" id="sn_tooltip"></div>

ги има само по 1 път във файла.
 
От: Помощ за регекс за замяна на нещо между 2 израза

Нещо такова?

Код:
/(<div style="margin-top:20px;" class="ab_text">.*<div class="ab_tooltip" id="sn_tooltip"></div>)/is
 
От: Помощ за регекс за замяна на нещо между 2 израза

Това поне аз бих го направил с манипулация на DOM-a. Но както винаги съм казвал регексповете не са ми силна страна.
 
За дом-а и аз го мислех, но регекс е по-добре. Ако го подкарам. За сега не мога.
Помагайте.
 
От: Re: Помощ за регекс за замяна на нещо между 2 израза

Не, не става така.

Та казваш, че това не ти върши работа?

PHP:
<?php

$html=<<< EOQ
<html>
   <body>
      <div style="margin-top:20px;" class="ab_text"> 
      бла бла бла
      <div class="ab_tooltip" id="sn_tooltip"></div>
   </body>
</html>
EOQ;

$pattern = '/(<div style="margin-top:20px;" class="ab_text">(.*)<div class="ab_tooltip" id="sn_tooltip"><\/div>)/is';
echo preg_replace($pattern, 'нещо друго', $html) ;
 
От: Помощ за регекс за замяна на нещо между 2 израза

Здравейте,
И така също става:

Код:
<?php
$html ='
      <div style="margin-top:20px;" class="ab_text"> 
      бла бла бла
      <div class="ab_tooltip" id="sn_tooltip"></div> 
';
$replace = preg_replace('/<div style=\"margin-top:20px;\" class=\"ab_text\">((?:.|[\r\n])+) .*<div class=\"ab_tooltip\" id=\"sn_tooltip\"><\/div>/','новия клас който ви трябва',$html);
echo $replace;

Примера на колегата @Mimkis също работи.
 
Re: От: Re: Помощ за регекс за замяна на нещо между 2 израза

Та казваш, че това не ти върши работа?

PHP:
<?php

$html=<<< EOQ
<html>
   <body>
      <div style="margin-top:20px;" class="ab_text"> 
      бла бла бла
      <div class="ab_tooltip" id="sn_tooltip"></div>
   </body>
</html>
EOQ;

$pattern = '/(<div style="margin-top:20px;" class="ab_text">(.*)<div class="ab_tooltip" id="sn_tooltip"><\/div>)/is';
echo preg_replace($pattern, 'нещо друго', $html) ;

в python не стана. като се върна от отпуска ще пробвам, че може би проблема е с новите редове \n\r
 
От: Помощ за регекс за замяна на нещо между 2 израза

@garnet, примера който съм дал включва и новите редове " ((?:.|[\r\n])+) "
 

Горе