2

このサイトから番号の場所を取得する必要があります

lookupexpert.com/search_phone?phone_number=7322691678

そして、私は内部のすべてに一致する正規表現が欲しい

<p class="location">OCEAN GATE, NJ</p>

それ、どうやったら出来るの?

これは私がこれまでにしたことです

<?php

$subject = file_get_contents("http://lookupexpert.com/search_phone?phone_number=7322691678");

$pattern = '#\<p class="location"\>(.+?)\<\/p\>#s';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);

?>

また...Xpathを試してみましたが、適切に検証されていないため、あまりうまく機能しませんでした

/html/body/div/div[2]/div/ul/li[2]/p[4]
4

4 に答える 4

4

これを試して:

$subject = file_get_contents( 'http://www.lookupexpert.com/search_phone?phone_number=7322691678');
preg_match_all( '#<p class="location">(.*?)</p>#', $subject, $matches);
var_dump( $matches[1][1]);

これは以下を出力します:

string(14) "OCEAN GATE, NJ" 

デモ

于 2012-06-01T14:52:46.560 に答える
2

このXPathを使用する

//p[@class='location']/text()

またはこの正規表現

(?<=<p class="location">)([^<>]+)(?=</p>)

コード

preg_match_all('%(?<=<p class="location">)([^<>]+)(?=</p>)%', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[1];
于 2012-06-01T14:56:15.020 に答える
1

これを試してみてください。

$string = '<p class="location">OCEAN GATE, NJ</p>';
$pattern = '/<p class="location">(.*)<\/p>/';

$preg = preg_match_all($pattern, $string, $match);
print_r($match);
于 2012-06-01T14:50:17.673 に答える
1

HTMLを解析する信頼性の低い正規表現に依存せず、代わりにDOMパーサーを使用することをお勧めします。次のようなコードを使用します。

$doc = new DOMDocument();
libxml_use_internal_errors(true);
// assuming search_phone.html contains your saved HTML source
#$doc->loadHTMLFile('search_phone.html'); // loads your html
$xpath = new DOMXPath($doc);
$value = $xpath->evaluate("string(//li[starts-with(@class, 'recordItem')]/
                           p[@class='location']/text())"); 
echo "Location Name: [$value]\n"; // prints your location

出力:

Location Name: [OCEAN GATE, NJ]
于 2012-06-01T15:00:03.343 に答える