Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [php] мегапроблема (https://forum.antichat.xyz/showthread.php?t=164748)

rubik-nerubik 19.12.2009 23:20

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

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

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

суть в чём

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

Код:

..............
лаблбалабалбалабала длинноееее
<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>
блаблбалабалбалабала длинноееее
...............

вот кусок выше без пробелов от буллитина http://slil.ru/28371079/156b675f.4b2dce90/xxxx.txt

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

т.е. подитожим, найти заданное слово, сместиться назад до <tr> потом найти ближайший </tr> и от <tr>...до...</tr> удалить это 0_о

Deathdreams 19.12.2009 23:27

Можешь регулярками выдрать все <tr>(.*)</tr>, а потом проверять в них на наличие %CC-3358, если есть - str_replace("Этот кусок с %CC-3358", "", $content);

rubik-nerubik 19.12.2009 23:47

=\ не пойму как загнать это в прег матч алл <tr>(.*)</tr> ругается

Код:

<?
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;


?>


Gifts 20.12.2009 00:02

rubik-nerubik В топике не хватает восклицательных знаков, ололо и адын адын
PHP код:

<?
$in 
'текст входной';
$noword preg_quote('%CC-3358','~');
echo 
preg_replace('~(<tr>(?(?!<tr>).)*?'.$noword.'.*?</tr>)~msi','',$in);
?>


rubik-nerubik 20.12.2009 00:25

воу супер, помогите собрать для кучи таких %CC-3358

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

ну типа:

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

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

Deathdreams 20.12.2009 01:24

PHP код:

<?
$in 
'текст входной';
$noword preg_quote("%CC-\d+",'~');
echo 
preg_replace('~(<tr>(?(?!<tr>).)*?'.$noword.'.*?</tr>)~msi','',$in);
?>

Возможно так.

rubik-nerubik 20.12.2009 13:41

нееет ты суть не понял!!!! не обязательно) %CC-3358))))

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


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

Gifts 20.12.2009 14:52

Deathdreams Посмотрите на досуге что делает функция preg_quote

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

rubik-nerubik 22.12.2009 00:48

Код:

<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 два раза(т.е. сколько заданных слов для удаления) а мне надо чтобы один) и в этом одном удалил все заданные строки.

rubik-nerubik 23.12.2009 14:34

ну так что


Время: 12:39