ďťż
Podstrony
|
telcocafeMam 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 |
|||
Sitedesign by AltusUmbrae. |