Web サイトのリストからいくつかの数字を抽出するタスクがあります。これらの数字はすべて、1234567890 のように同じ桁数です。
PHP を使用して、特定の URL から 10 桁の数字をすべて抽出するにはどうすればよいですか?
Web サイトのリストからいくつかの数字を抽出するタスクがあります。これらの数字はすべて、1234567890 のように同じ桁数です。
PHP を使用して、特定の URL から 10 桁の数字をすべて抽出するにはどうすればよいですか?
負の先読み式と後読み式で正規表現を使用する:
(?<!\d)
- 番号を前に付けない\d{10}
- 10個の数字(?!\d)
- 番号の末尾に付いていないそして適用しますpreg_match_all()
:
$matches = array();
preg_match_all('~(?<!\\d)(\\d){10}(!?\\d)~', $html, $matches);
foreach( $matches[1] as $match){
var_dump($match);
}
<?
$sites = array(
'http://foo.bar/',
'http://blah.baz/'
);
foreach ($sites as $site) {
$ch = curl_init($site);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
if ($res === false) {
echo "Failed to download $site: " . curl_error($ch) . "\n";
} else {
if (preg_match_all('/\d{10}/', $res, $matches) !== false) {
echo "Found some numbers at $site\n";
foreach ($matches as $match) {
echo "Found number: " . $match[0] . "\n";
}
}
}
curl_close($ch);
}
?>