Соскрести с подстановочными знаками и php - PullRequest
6 голосов
/ 06 мая 2011

Эй, ребята, мне трудно визуализировать и придумать, чтобы почистить эту страницу: http://www.morewords.com/ends-with/aw для самих слов. Учитывая URL, я хотел бы получить содержимое, а затем сгенерировать массив php со всеми перечисленными словами, который в исходном коде выглядит как

<a href="/word/word1/">word1</a><br />
<a href="/word/word2/">word2</a><br />
<a href="/word/word3/">word3</a><br />
<a href="/word/word4/">word4</a><br />

Есть несколько способов, которыми я думал об этом, я был бы признателен, если бы вы могли помочь мне выбрать наиболее эффективный способ. Кроме того, я был бы признателен за любые советы или примеры, как этого добиться. Я понимаю, что это не невероятно сложно, но я мог бы воспользоваться помощью ваших продвинутых хакеров.

  • Используйте какую-то разновидность jquery $ .each (), чтобы перебрать и каким-то образом поместить их в массив JS, а затем транскрибировать (возможно, с большими нагрузками)
  • использовать какой-нибудь локон (на самом деле не так много опыта с локонами)
  • используйте сложный поиск и замените его регулярным выражением.

1 Ответ

3 голосов
/ 06 мая 2011

Вы пометили его как PHP, так что вот решение PHP:)

$dom = new DOMDocument;

$dom->loadHTMLFile('http://www.morewords.com/ends-with/aw');

$anchors = $dom->getElementsByTagName('a');

$words = array();

foreach($anchors as $anchor) {
    if ($anchor->hasAttribute('href') AND preg_match('~/word/\w+/~', $anchor->getAttribute('href'))) {
        $words[] = $anchor->nodeValue;
    }
}

CodePad .

Если в php.ini отключено allow_url_fopen, вы можете использовать cURL для получения HTML.

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://www.morewords.com/ends-with/aw'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($curl);    
curl_close($curl);   
...