1
// get CONTENT from united domains footer
$content = file_get_contents('http://www.uniteddomains.com/index/footer/');

// remove spaces from CONTENT
$content = preg_replace('/\s+/', '', $content);

// match all tld tags
$regex = '#target="_parent">.(.*?)</a></li><li>#';
preg_match($regex, $source, $matches);


print_r($matches);

我想匹配所有的顶级域名:

每个 tld 前面target="_parent">.和后面</a></li><li>

我想得到一个像这样的数组array('africa','amsterdam','bnc'...ect ect )

我在这里做错了什么?

注意:删除所有空格的第二步只是为了简化事情。

4

2 回答 2

3

这是一个用于该页面的正则表达式。

\.\w+(?=</a></li>)

雷伊

PHP

$content = file_get_contents('http://www.uniteddomains.com/index/footer/');
preg_match_all('/\.\w+(?=<\/a><\/li>)/m', $content, $matches);
print_r($matches);

PHPFiddle

结果如下:

.africa、.amsterdam、.bcn、.berlin、.boston、.brussels、.budapest、.gent、.hamburg、.koeln、.london、.madrid、.melbourne、.moscow、.miami、.nagoya、.nyc , .okinawa, .osaka, .paris, .quebec, .roma, .ryukyu, .stockholm, .sydney, .tokyo, .vegas, .wien, .yokohama, .africa, .arab, .bayern, .bzh, . cymru、.kiwi、.lat、.scot、.vlaanderen、.wales、.app、.blog、.chat、.cloud、.digital、.email、.mobile、.online、.site、.mls、.secure、 .web、.wiki、.associates、.business、.car、.careers、.contractors、.clothing、.design、.equipment、.estate、.gallery、.graphics、.hotel、.immo、.investments、.law , .management, .media, .money, .solutions, .sucks, .taxi, .trade, .archi, .adult, .bio, .center, .city, .club, .cool, .date, .earth, .能量,.family,.free,.green,.live,.lol,.爱,.med,.ngo,.news,.phone,.pictures,.radio,.reviews,.rip,.team,.technology,.today,.voting,.buy,.deal,.luxe,.sale, .shop、.shopping、.store、.eus、.gay、.eco、.hiv、.irish、.one、.pics、.porn、.sex、.singles、.vin、.vip、.bar、.pizza , .wine, .bike, .book, .holiday, .horse, .film, .music, .party, .email, .pets, .play, .rocks, .rugby, .ski, .sport, .surf, .旅游,.video旅游,.video旅游,.video

于 2013-07-28T20:02:48.590 回答
0

使用 DOM 更干净:

$doc = new DOMDocument();
@$doc->loadHTMLFile('http://www.uniteddomains.com/index/footer/');
$xpath = new DOMXPath($doc);
$items = $xpath->query('/html/body/div/ul/li/ul/li[not(@class)]/a[@target="_parent"]/text()');
$result = '';
foreach($items as $item) {
    $result .= $item->nodeValue; }
$result = explode('.', $result);
array_shift($result);
print_r($result);
于 2013-07-28T20:08:23.550 回答