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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   preg_match (https://forum.antichat.xyz/showthread.php?t=196196)

rubik-nerubik 14.04.2010 18:50

preg_match
 
помогите)

есть файл 1.txt, в нём строки типа:
Код:

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон1</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон2</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>


и вообщем нужно три разных прегматча чтобы можно было отдельно вытащить дату как видим 14.04.2010, отдельно вытащить имя, это Антон и вытащить само содержимое и суть в чем былобы две возможности удалить вообще эту строку от <table до </table> и изменить эти три параметра

drim 14.04.2010 18:55

используйте пареметр width=% как якорь - для разных полей его значение разное

rubik-nerubik 14.04.2010 19:00

ну так я сам хз как

п.с. я сделал якоря 1 2 и 3 может поможет

drim 14.04.2010 19:07

в перле как-то так
$date = $1 if $srctext =~ /width=16% valign=top><p align=center>(\d\d\.\d\d\.\d\d\d\d)</;
$name = $1 if $srctext =~ /width=18% valign=top><p align=center>(\w+)</;
$info = $1 if $srctext =~ /width=51% valign=top><p align=center>(\w+)</;

в php не подскажу, ибо лень - думайте сами
в документации описано

Deathdreams 14.04.2010 19:10

drim, человек просит на php, а не на perl

rubik-nerubik 14.04.2010 19:11

не, в перле ненандо) да и не похоже на пхп =(

drim 14.04.2010 19:13

Цитата:

Сообщение от Deathdreams
drim, человек просит на php, а не на perl

не, ну я читать умею, а хз чо ему не ясно - сам принцип или синтаксис.
я принципом я помог, как мог, ну а синтаксис - извиняйте, прийдётся и своим моском подумать чуток

ps если _очень приблизительно, то что-то вроде
preg_match($reg, $srcstring,$result);
и в одном из элементов массива $result будет искомые данные

dr.Web 14.04.2010 19:17

PHP код:

<?



$str
='<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон1</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон2</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>'
;

preg_match_all('/<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>(.*)<\/td><td align=center width=18% valign=top 2>(.*)<\/td><td width=51% valign=top 3>(.*)<\/td><\/tr><\/table>/i',$str,$res);

print_r($res);

?>

держи

rubik-nerubik 14.04.2010 19:21

воо уже ближе dr.Web а можешь сделать чтобы каждая дата, имя были в отдельных инпутах а сообщение в textarea тут чето добавить надо вроде.. а что хз

Deathdreams 14.04.2010 19:28

ТС сам не знаешь, что ему нужно.
Выдрать или что ?

dr.Web 14.04.2010 19:31

PHP код:

<?

$str
='<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон1</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>Антон2</td><td width=51% valign=top 3>текстовое сообщение о как</td></tr></table>'
;

preg_match_all('/<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>(.*)<\/td><td align=center width=18% valign=top 2>(.*)<\/td><td width=51% valign=top 3>(.*)<\/td><\/tr><\/table>/i',$str,$res);

//print_r($res);


foreach($res as $param){if($res[0]!=$param){echo"<input type=text value=\"$param[0]\"><input type=text value=\"$param[1]\"><input type=text value=\"$param[2]\"><br>\n";}}

?>


rubik-nerubik 14.04.2010 19:33

если скармливаю например такой текст - не работает:

Код:

<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>вава</td><td width=51% valign=top 3>вавававава</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>6565</td><td width=51% valign=top 3>565656565</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>5555</td><td width=51% valign=top 3>4555555555</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>57567</td><td width=51% valign=top 3>567567</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>757567</td><td width=51% valign=top 3>567567567</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>567567</td><td width=51% valign=top 3>576756756756</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>56757</td><td width=51% valign=top 3>56756757</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>4645645</td><td width=51% valign=top 3>6456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>343434</td><td width=51% valign=top 3>343434</td></tr></table>


dr.Web 14.04.2010 20:30

PHP код:

<?
$str
='<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>вава</td><td width=51% valign=top 3>вавававава</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>6565</td><td width=51% valign=top 3>565656565</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>456456456</td><td width=51% valign=top 3>456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>5555</td><td width=51% valign=top 3>4555555555</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>57567</td><td width=51% valign=top 3>567567</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>757567</td><td width=51% valign=top 3>567567567</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>567567</td><td width=51% valign=top 3>576756756756</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>56757</td><td width=51% valign=top 3>56756757</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>4645645</td><td width=51% valign=top 3>6456456456</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>45645</td><td width=51% valign=top 3>645646</td></tr></table>
<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>14.04.2010</td><td align=center width=18% valign=top 2>343434</td><td width=51% valign=top 3>343434</td></tr></table>'
;

preg_match_all('/<table width=100% bgcolor=#FDFDFF width=702><td width=16% valign=top 1><p align=center>(.*)<\/td><td align=center width=18% valign=top 2>(.*)<\/td><td width=51% valign=top 3>(.*)<\/td><\/tr><\/table>/i',$str,$res);

//print_r($res);


for($i=0;$i<count($res[1]);$i++){echo"<input type=text value=\"".$res[1][$i]."\"><input type=text value=\"".$res[2][$i]."\"><input type=text value=\"".$res[3][$i]."\"><br>";}

?>

так лучше?


Время: 20:51