ďťż

[PHP] Wyrażenia Regularne preg_replace, eregi, ereg czego użyć?

       

Podstrony


telcocafe

Mam plik w którym znajduje się około 30 000 rekordów typu:

<tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name</a><br>description<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td> </tr>

Chcę teraz wpisać rekordy do bazy danych.
CREATE TABLE `pliki` ( `id` int(5) NOT NULL auto_increment, `nazwa` varchar(255) NOT NULL default '', `opis` varchar(255) NOT NULL default '', `data` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) TYPE=MyISAM;

nazwa = name
opis = description

Wszystko jak widać prawie gotowe, nie mam jedynie pomysłu jak wydzielić name i description do oddzielnych zmiennych (tablic).

Więc moje pytanie brzmi: jak wyciągnąć description i name z

<tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name</a><br>description<br>
<a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr>


xxx oraz bbbb ulegają zmianie(!)



http://pl.php.net/preg_match
ew
http://pl.php.net/preg_match_all
Użytkownik bikstopa edytował ten post 11 luty 2007, 15:43
Może niekoniecznie wyrażenia regularne, ale przecież i standardowo da się to zrobić :P
<? $s = ' <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name1</a><br>description1<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name2</a><br>description2<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name3</a><br>description3<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name4</a><br>description4<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name5</a><br>description5<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr>'; $f01 = '<tr><td>'; $f02 = '</td></tr>'; $f11 = 'class="f14px">'; $f12 = '</a><br>'; $f13 = "<br>\r\n<a href=\"/"; while (strpos($s,$f02)!='') { $tmp = substr($s, strpos($s, $f01)+strlen($f01)); $tmp = substr($tmp,strpos($tmp, $f11)+strlen($f11)); $n[] = substr($tmp,0,strpos($tmp,$f12)); $tmp = substr($tmp,strpos($tmp,$f12)+strlen($f12)); $d[] = substr($tmp,0,strpos($tmp,$f13)); $s = substr($tmp,strpos($tmp,$f02)+strlen($f02)); } if (count($n) == count($d)) for ($i=0;$i<count($n);$i++) echo "$n[$i] / $d[$i]<br/>\r\n"; ?>

@down: skoro można, to czemu nie :> ?
Poza tym, póki co jedyny podałem całkowity sposób na rozwiązanie problemu (czytaj z przykładami ;)) :P
Użytkownik DJ_ProG edytował ten post 13 luty 2007, 20:50
DJ: po co sobie aż tak utrudniać życie?



ja tylko spytam, czemu się przy PHP upieracie, w Delphi będzie szybciej ;)


ja tylko spytam, czemu się przy PHP upieracie, w Delphi będzie szybciej ;)
A ja tylko odpowiem: bo autor tematu tak chce? :blink: Zresztą, co ma Delphi do PHP i wykorzystania na stronach WWW?


ja tylko spytam, czemu się przy PHP upieracie, w Delphi będzie szybciej ;)
odpal mi program napisany w delphi na jakims hostingu unixoweym z php i cronem - wtedy pogadamy

@DJ_ProG tosz to technika z kamieniolomow, noz w kieszeni sie otwiera jak widze takie kody....


@DJ_ProG tosz to technika z kamieniolomow, noz w kieszeni sie otwiera jak widze takie kody.... Ale zawsze ;)
Nie każdy (jak zapewne Ty) tak świetnie umie posługiwać się wyrażeniami regularnymi, więc trzeba sobie jakoś radzić.
Proponuję, byś podał swoje rozwiązanie (w postaci listingu PHP) :)


Ale zawsze ;)
Nie każdy (jak zapewne Ty) tak świetnie umie posługiwać się wyrażeniami regularnymi, więc trzeba sobie jakoś radzić.
Proponuję, byś podał swoje rozwiązanie (w postaci listingu PHP) :)


a do czego ci tu listing potrzebny?

<?php $s = ' <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name1</a><br>description1<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name2</a><br>description2<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name3</a><br>description3<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name4</a><br>description4<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr> <tr><td><a href="/xxx/xxx.shtml?bbbb" class="f14px">name5</a><br>description5<br> <a href="/xxx/xxx.shtml?bbbb">/xxx/xxx.shtml?bbbb</a><br><hr></td>< /tr>'; preg_match_all("#<tr><td><a href=\"(.*?)\" class=\"(.*?)\">(.*?)</a><br>(.*?)<br>(.*?)<a href=\"(.*?)\">(.*?)</a><br><hr></td></tr>#s" , $s, $t); echo '<pre>'; print_r($t[3]); print_r($t[4]); echo '</pre>'; ?>
$s = string wchodzacy
$t = przetwozona tablica wymiarowa
jedna linijka kodu :>
(.*?) = wszystko albo nic ;s

$f01 = '<tr><td>'; $f02 = '</td></tr>'; $f11 = 'class="f14px">'; $f12 = '</a><br>'; $f13 = "<br>\r\n<a href=\"/"; while (strpos($s,$f02)!='') { $tmp = substr($s, strpos($s, $f01)+strlen($f01)); $tmp = substr($tmp,strpos($tmp, $f11)+strlen($f11)); $n[] = substr($tmp,0,strpos($tmp,$f12)); $tmp = substr($tmp,strpos($tmp,$f12)+strlen($f12)); $d[] = substr($tmp,0,strpos($tmp,$f13)); $s = substr($tmp,strpos($tmp,$f02)+strlen($f02)); } if (count($n) == count($d)) for ($i=0;$i<count($n);$i++) echo "$n[$i] / $d[$i]<br/>\r\n"; = preg_match_all("#<tr><td><a href=\"(.*?)\" class=\"(.*?)\">(.*?)</a><br>(.*?)< br>(.*?)<a href=\"(.*?)\">(.*?)</a><br><hr></td> </tr>#s", $s, $t);
Użytkownik bikstopa edytował ten post 14 luty 2007, 01:38
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.