[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярка
denis79513
preg_match_all("(/<tbody>[\s\S]*</tbody>$)", file_get_contents("http://www.melissadata.com/Lookups/iplocation.asp?ipaddress=71.246.107.180"), $m);
var_dump($m);


Выдает array(1) { [0]=> array(0) { } }
Почему не выдирает таблицу с местоположением?
TMake
потому что регулярка не верная.
Какую таблицу именно нужно вытаскивать?
Winston
А где ты в исходном коде увидел тег <tbody>? (инспектор кода не считается)
preg_match_all("#(<table[^>]*>[\s\S]*</table>)#isuU", file_get_contents("http://www.melissadata.com/Lookups/iplocation.asp?ipaddress=71.246.107.180"), $m);
echo '<pre>' . htmlspecialchars(print_r($m, 1));
denis79513
<tbody><tr><td class="headtitresp" colspan="2" align="center"><div class="Titresultableok" style="font-size:15px;"><b>IP Address Location</b></div></td></tr>
<tr><td colspan="2" height="4"></td></tr>
<tr class="tdresul01"><td class="columresult">IP Address</td><td align="left"><b>71.246.107.180</b></td></tr>
<tr><td class="columresult">City</td><td align="left"><b>New York</b></td></tr>
<tr class="tdresul01"><td class="columresult">State or Region</td><td align="left"><b>New York</b></td></tr>
<tr><td class="columresult">Country</td><td align="left"><b>United States</b></td></tr>
<tr class="tdresul01"><td class="columresult">ISP</td><td align="left"><b>Verizon Online Llc&nbsp;</b></td></tr>
<tr><td class="columresult">Latitude &amp; Longitude</td><td align="left"><b>40.7500&nbsp;&nbsp;-73.9970</b></td></tr>
<tr class="tdresul01"><td class="columresult">Domain</td><td align="left"><b>verizon.net&nbsp;</b></td></tr>

<tr><td class="columresult">ZIP Code</td><td align="left"><b>10021</b></td></tr>

</tbody>
Winston
denis79513
Это ты через инспектор посмотрел?
denis79513
Да, что-то я тупанул.
Но ваш вариант выбирает другую, большую таблица, как выбрать ту, что с данными местоположения, или сразу из нее вытянуть страну и город.
Winston
Вот
preg_match_all("#(?:City</td>.*<b>(.*)</b>|Country</td>.*<b>(.*)</b>)#isuU  ", file_get_contents("http://www.melissadata.com/Lookups/iplocation.asp?ipaddress=71.246.107.180"), $m);
denis79513
Большое спс, а почему с этим адресом не работает?
http://www.melissadata.com/Lookups/iplocat...ess=2.60.56.174
denis79513
Неужели никто не поможет?
OleKh
Регулярное выражение не работало с тем адресом потому, что перевод строк не учитывался.

Может вот так должно находить, но не факт, что оптимально + добавил пробелы на всякий случай.
(?:City</td>[\n?]*[\s?]*(?:.*)<b>(.*)</b>|Country</td>[\n?]*[\s?]*(?:.*)<b>(.*)</b>)
OleKh
Хотя, напрасно я парился что-то исправлять, не проверив. У меня находится и так и так (и без перевода строк и пробелов). Странно почему не работает с тем адресом.

Похоже у меня лишнее и попросту не нужное в регулярном выражении. А получилось так потому что я скопировал для проверки контент через Dragonfly
<tr>
<td
class="columresult">City</td>
<td
align="left">
<b>
Omsk</b>
</td>
</tr>


А исходный код показывает, что переводов строк нет.
 <tr><td class='columresult'>City</td><td align='left'><b>Omsk</b></td></tr>


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.