[php] мегапроблема

Discussion in 'PHP' started by rubik-nerubik, 19 Dec 2009.

  1. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    есть мега проблема

    допустим в файле задан небольшой текст

    %CC-3358 (т.е. это первые %CC буква М русская, не спроста читаем далее)

    суть в чём

    в другом файле(который выводим на экран) есть куча разного текста и при нахождение этго надо будет удалить целый кусок кода типа:

    Code:
    ..............
    лаблбалабалбалабала длинноееее
    <tr><td bgcolor="#eeeeee"><a href="/ind.php?content=article&amp;article=[B][COLOR=Red]%CC-3358[/COLOR][/B]&amp;group1=%C0%E4%E3%E5%E7%E8%E2%FB+%E8+%F1%F0%E5%E4%F1%F2%E2%E0+%EA%F0%E5%EF%EB%E5%ED%E8%FF&amp;group2=%C8%ED%F1%F2%F0%F3%EC%E5%ED%F2%FB&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dfull.gif" alt="Для этого товара есть полное описание" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#eeeeee">М-3358</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="name" bgcolor="#eeeeee">Пистолет STAYER термоклеящий электрич. 10Вт/220В,7мм.</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td bgcolor = "#eeeeee" class="unit">шт</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="price" bgcolor="#eeeeee">УТ.&nbsp;</td><td align="right" bgcolor="#eeeeee">&nbsp;<input type="hidden" name="v[0][id]" value="М-3358" /></td><td align="right" bgcolor="#eeeeee"></td></tr>
    блаблбалабалбалабала длинноееее
    ...............
    
    вот кусок выше без пробелов от буллитина http://slil.ru/28371079/156b675f.4b2dce90/xxxx.txt

    т.е. надо найти первое вхождение строки %CC-3358, потом минус длинну текста от <tr> и найти ближайший </tr> и как-то удалить 0_о

    т.е. подитожим, найти заданное слово, сместиться назад до <tr> потом найти ближайший </tr> и от <tr>...до...</tr> удалить это 0_о
     
    #1 rubik-nerubik, 19 Dec 2009
    Last edited: 19 Dec 2009
  2. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Можешь регулярками выдрать все <tr>(.*)</tr>, а потом проверять в них на наличие %CC-3358, если есть - str_replace("Этот кусок с %CC-3358", "", $content);
     
  3. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    =\ не пойму как загнать это в прег матч алл <tr>(.*)</tr> ругается

    Code:
    <?
    error_reporting();
    $t='1<tr><td bgcolor="#eeeeee"><a href="/ind.php?content=article&amp;article=%CC-3358&amp;group1=%C0%E4%E3%E5%E7%E8%E2%FB+%E8+%F1%F0%E5%E4%F1%F2%E2%E0+%EA%F0%E5%EF%EB%E5%ED%E8%FF&amp;group2=%C8%ED%F1%F2%F0%F3%EC%E5%ED%F2%FB&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dfull.gif" alt="Для этого товара есть полное описание" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#eeeeee">М-3358</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="name" bgcolor="#eeeeee">Пистолет STAYER термоклеящий электрич. 10Вт/220В,7мм.</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td bgcolor = "#eeeeee" class="unit">шт</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="price" bgcolor="#eeeeee">УТ.&nbsp;</td><td align="right" bgcolor="#eeeeee">&nbsp;<input type="hidden" name="v[0][id]" value="М-3358" /></td><td align="right" bgcolor="#eeeeee"></td></tr>
    блаблбалабалбалабала длинноееее
    ...............';
    $t1='%CC-3358';
    
    
    preg_match_all('<'.'tr'.'>'.(.*).'<'.'/'.'tr'.'>',$t,$xz);
    
    $s=strpos($xz[1][0],$t1);
    
    if(is_string($s)) {   str_replace($xz[1][0],'',$t); $s='';   }
    
    
    
    echo$t;
    
    
    ?>
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    rubik-nerubik В топике не хватает восклицательных знаков, ололо и адын адын
    PHP:
    <?
    $in 'текст входной';
    $noword preg_quote('%CC-3358','~');
    echo 
    preg_replace('~(<tr>(?(?!<tr>).)*?'.$noword.'.*?</tr>)~msi','',$in);
    ?>
     
    _________________________
    2 people like this.
  5. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    воу супер, помогите собрать для кучи таких %CC-3358

    я имею ввиду искать не тока одну %CC-3358
    а допустим в первом файле ещё пару строчек с разными %CC-3358

    ну типа:

    %CC-3358
    %CC-3312
    %CC-432
    %C1-3358

    т.е. для всех них удалить такие же строки
     
  6. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    PHP:
    <?
    $in 'текст входной';
    $noword preg_quote("%CC-\d+",'~');
    echo 
    preg_replace('~(<tr>(?(?!<tr>).)*?'.$noword.'.*?</tr>)~msi','',$in);
    ?>
    Возможно так.
     
  7. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    нееет ты суть не понял!!!! не обязательно) %CC-3358))))

    хоть
    %1212-121212
    %1-12233213


    т.е.. в файле есть несколько разных строк, не связанных ничем, просто вот такие строки надо поискать методом #4
     
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Deathdreams Посмотрите на досуге что делает функция preg_quote

    rubik-nerubik Помните мультик, где были двое из ларца, одинаковых с лица? "Вы что, за меня и есть будете? - Агаааа"
     
    _________________________
  9. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    Code:
    <meta Content-type: text/plain; charset=windows-1251>
    <?
    error_reporting(0);
    $file=file("my_file.txt");
    $count +=count($file); //кол-во строк
    
    for($i=0;$i<$count;$i++) {
    $fileg.=$file[$i]; //сам файлик внутри переменной
    
    
    
    
    $in='
    
    <head>
    
    </head>
    
    <table class="catalog" align="center" border="0" bordercolor="#000000" cellpadding="0" cellspacing="0" width="560">
    <tr><td align="left" colspan="10"> <br></td></tr><tr><td bgcolor="#eeeeee"><a href="/ind.php?content=article&amp;article=%C8%D1-0229.9617&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dfull.gif" alt="Для этого товара есть полное описание" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#eeeeee">ИС-0229.9617</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="name" bgcolor="#eeeeee">Багет деревянный</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td bgcolor = "#eeeeee" class="unit">п/м</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="price" bgcolor="#eeeeee">УТ.&nbsp;</td><td align="right" bgcolor="#eeeeee">&nbsp;<input type="hidden" name="v[0][id]" value="ИС-0229.9617" /></td><td align="right" bgcolor="#eeeeee"></td></tr>
    <tr><td bgcolor="#ffffff"><a href="/ind.php?content=article&amp;article=%C8%D1-0258.2079&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#ffffff">ИС-0258.2079</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="name" bgcolor="#ffffff">Багет деревянный</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td bgcolor = "#ffffff" class="unit">п/м</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="price" bgcolor="#ffffff">УТ.&nbsp;</td><td align="right" bgcolor="#ffffff">&nbsp;<input type="hidden" name="v[1][id]" value="ИС-0258.2079" /></td><td align="right" bgcolor="#ffffff"></td></tr>
    <tr><td bgcolor="#eeeeee"><a href="/ind.php?content=article&amp;article=%C8%D1-0258.9469&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#eeeeee">ИС-0258.9469</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="name" bgcolor="#eeeeee">Багет деревянный</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td bgcolor = "#eeeeee" class="unit">п/м</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="price" bgcolor="#eeeeee">УТ.&nbsp;</td><td align="right" bgcolor="#eeeeee">&nbsp;<input type="hidden" name="v[2][id]" value="ИС-0258.9469" /></td><td align="right" bgcolor="#eeeeee"></td></tr>
    <tr><td bgcolor="#ffffff"><a href="/ind.php?content=article&amp;article=%C8%D1-0346.8395&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#ffffff">ИС-0346.8395</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="name" bgcolor="#ffffff">Багет деревянный</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td bgcolor = "#ffffff" class="unit">п/м</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="price" bgcolor="#ffffff">УТ.&nbsp;</td><td align="right" bgcolor="#ffffff">&nbsp;<input type="hidden" name="v[3][id]" value="ИС-0346.8395" /></td><td align="right" bgcolor="#ffffff"></td></tr>
    <tr><td bgcolor="#eeeeee"><a href="/ind.php?content=article&amp;article=%C8%D1-0346.8405&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#eeeeee">ИС-0346.8405</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="name" bgcolor="#eeeeee">Багет деревянный</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td bgcolor = "#eeeeee" class="unit">п/м</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="price" bgcolor="#eeeeee">УТ.&nbsp;</td><td align="right" bgcolor="#eeeeee">&nbsp;<input type="hidden" name="v[4][id]" value="ИС-0346.8405" /></td><td align="right" bgcolor="#eeeeee"></td></tr>
    <tr><td bgcolor="#ffffff"><a href="/ind.php?content=article&amp;article=%C8%D1-0923.8585&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#ffffff">ИС-0923.8585</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="name" bgcolor="#ffffff">Багет деревянный</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td bgcolor = "#ffffff" class="unit">п/м</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="price" bgcolor="#ffffff">УТ.&nbsp;</td><td align="right" bgcolor="#ffffff">&nbsp;<input type="hidden" name="v[5][id]" value="ИС-0923.8585" /></td><td align="right" bgcolor="#ffffff"></td></tr>
    <tr><td bgcolor="#eeeeee"><a href="/ind.php?content=article&amp;article=%C8%D1-1090.8505&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#eeeeee">ИС-1090.8505</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="name" bgcolor="#eeeeee">Багет деревянный</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td bgcolor = "#eeeeee" class="unit">п/м</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="price" bgcolor="#eeeeee">УТ.&nbsp;</td><td align="right" bgcolor="#eeeeee">&nbsp;<input type="hidden" name="v[6][id]" value="ИС-1090.8505" /></td><td align="right" bgcolor="#eeeeee"></td></tr>
    <tr><td bgcolor="#ffffff"><a href="/ind.php?content=article&amp;article=%C8%D1-1090.8806&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#ffffff">ИС-1090.8806</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="name" bgcolor="#ffffff">Багет деревянный</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td bgcolor = "#ffffff" class="unit">п/м</td><td class="margin"  bgcolor="#ffffff">&nbsp;&nbsp;</td><td class="price" bgcolor="#ffffff">УТ.&nbsp;</td><td align="right" bgcolor="#ffffff">&nbsp;<input type="hidden" name="v[7][id]" value="ИС-1090.8806" /></td><td align="right" bgcolor="#ffffff"></td></tr>
    <tr><td bgcolor="#eeeeee"><a href="/ind.php?content=article&amp;article=%C8%D1-1096.8655&amp;group1=%C1%E0%E3%E5%F2%ED%E0%FF+%EC%E0%F1%F2%E5%F0%F1%EA%E0%FF&amp;group2=%C8%F1%EF%E0%ED%E8%FF+%28%E4%E5%F0%E5%E2%EE%29&amp;group3=%D0%E0%E7%ED%EE%E5"><img src="images/dno.gif" alt="" width="15" height="15" hspace="2" vspace="0" border="0" /></a></td><td class="articul" bgcolor="#eeeeee">ИС-1096.8655</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="name" bgcolor="#eeeeee">Багет деревянный</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td bgcolor = "#eeeeee" class="unit">п/м</td><td class="margin"  bgcolor="#eeeeee">&nbsp;&nbsp;</td><td class="price" bgcolor="#eeeeee">УТ.&nbsp;</td><td align="right" bgcolor="#eeeeee">&nbsp;<input type="hidden" name="v[8][id]" value="ИС-1096.8655" /></td><td align="right" bgcolor="#eeeeee"></td></tr>
    <tr><td align="center" colspan="10"></td></tr>
    </table>
    </form>
    
    ';
    $file[$i]=trim($file[$i]);
    
    
    $noword = preg_quote($file[$i],'~'); 
    $t.=preg_replace('~(<tr>(?(?!<tr>).)*?'.$noword.'.*?</tr>)~msi','',$in); 
    
    
    
    }
    
    
    echo$t;
    
    
    ?>
    
    
    набросал код, так вот проблема
    допустим в файле две строки:
    ИС-0229.9617
    ИС-0258.2079


    и мне надо по вышестоящему запросу тупо удалить эти две строки со всем вместе текстом т.е. от <tr> До </tr>
    так вот он удаяет) но потом выводит весь заданный текст $in два раза(т.е. сколько заданных слов для удаления) а мне надо чтобы один) и в этом одном удалил все заданные строки.
     
  10. rubik-nerubik

    rubik-nerubik Elder - Старейшина

    Joined:
    4 May 2007
    Messages:
    248
    Likes Received:
    9
    Reputations:
    -2
    ну так что
     
  11. gisTy

    gisTy Elder - Старейшина

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    ну так пиши
     
  12. .Slip

    .Slip Elder - Старейшина

    Joined:
    16 Jan 2006
    Messages:
    1,571
    Likes Received:
    976
    Reputations:
    783
    Мега супер гипер важная охуительно срочная трансгалактическая проблема, я делать сам нихера не хочу и сделайте ка вы всё за меня.
     
    1 person likes this.
  13. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    Кривому вопросу кривая регулярка
    PHP:
    preg_replace("#<tr>(.+)([a-z0-9а-я])-\d(.+)</tr>#i","_ЗАМЕНИЛИ_",$in);