Autor | Zpráva | ||
---|---|---|---|
PetrX Profil * |
#1 · Zasláno: 5. 4. 2010, 17:55:06
Mám takový problém jak vysosnout požadovaný text, který je na více řádcích.
text je např takovýto: <tr> <td></td> <td><img src="/images/wpttypes/sm/2682.gif" alt="" /> <a href="http://www.geocaching.com/track/details.aspx?id=2283231">40 Years Man on the Moon - Start Geocoin</a></td> <td> </td> <td><a href="http://www.geocaching.com/profile/?guid=68f06dca-b4c0-40f0-a0ad-6f38ec8b5558">PetrX</a></td> <td><img src="/images/track/loc_user.jpg" width="22" height="22" alt="" /> <a href="http://www.geocaching.com/profile/?guid=68f06dca-b4c0-40f0-a0ad-6f38ec8b5558">PetrX</a></td> <td>0 km</td> </tr> Kód: <?php $zdroj = file_get_contents("http://www.geocaching.com/track/search.aspx?uid=68f06dca-b4c0-40f0-a0ad-6f38ec8b5558"); preg_match_all('~<td>(.*)</td><td><img src="/images/wpttypes/sm/([0-9,a-z]{1,4})\.gif" alt="" /> <a href="([^"]+)">([^<]+)</a></td><td>(.*)</td><td><a href="<a href="([^"]+)">([^<]+)</a></td><td><img src="/images/track/loc_user.jpg" width="([0-9]{1,2})" height="([0-9]{1,2})" alt="" /> <a href="<a href="<a href="([^"]+)">([^<]+)</a></td><td>(.+)</td>~isU', $zdroj, $out); ?> <xmp> <?php print_r($out); ?> </xmp> Tento kód nefunguje, ale problém nejspíše bude v tom konci řádku. Když použiji \n tak mi to nefunguje. Potřebuji poradit jak v regulérním výraze "vytvořím" konec řádku. |
||
Majkl578 Profil |
#2 · Zasláno: 5. 4. 2010, 20:13:47 · Upravil/a: Majkl578
Problém je v tom, že nedodržuješ formátování zdrojových dat, tj. odsazení, nové řadky apod.
Jinak ten výraz je sám o sobě nepřehledný a zbytečně složitý. Zkus to takto: $zdroj = file_get_contents('http://www.geocaching.com/track/search.aspx?uid=68f06dca-b4c0-40f0-a0ad-6f38ec8b5558'); preg_match_all('~<td>(.*)</td>\s*<td><img src="/images/wpttypes/sm/(\w{1,4})\.gif" alt="" /> <a href="(.+)">(.+)</a></td>\s*<td>(.*)</td>\s*<td><a href="(.+)">(.+)</a></td>\s*<td><img src="/images/track/loc_user.jpg" width="(\d{1,2})" height="(\d{1,2})" alt="" /> <a href="(.+)">(.+)</a></td>\s*<td>(.+)</td>~isU', $zdroj, $out, PREG_SET_ORDER); var_dump($out); |
||
PetrX Profil * |
#3 · Zasláno: 5. 4. 2010, 20:32:00
To bylo jen na ukázku, ale pravděpodobně to byl ten problém. Každopádně pro mě bylo nejdůležitější to \s*. Zbytek pořeším sám. Díky
|
||
Časová prodleva: 15 let
|
0