1
私はregexを使って最初にいくつかのファイルからURLを抽出しています。ファイルには最大250k行のテキストを含めることができます。ファイル内の各行は、$column7
という配列値に渡されます。以下は、私が望んでいたよりもはるかに長い時間がかかります。 20k行のURLを抽出するには最大1分かかる可能性があります。ドメインを抽出するには、URLの結果が入力されるので2〜3回かかることがありますので、私はそれがより速くなると期待しています。これを大幅にスピードアップするためにできることはありますか?ランタイムの問題 - 最大150k行の正規表現URL。
// EXTRACT URLS
$regex = '/(https?\:\/\/|www)[^(\"|\\\) ]+/i';
$urls = array();
for ($i = 0; $i < count($column7); ++$i) {
preg_match_all($regex, $column7[$i], $matches[$i]);
$urls = array_merge($urls, $matches[$i][0]);
}
// EXTRACT DOMAINS
$regex = '/(https?\:\/\/|www)[^\/ ]+/i';
$domains = array();
for ($i = 0; $i < count($urls); ++$i) {
preg_match_all($regex, $urls[$i], $matches[$i]);
$domains = array_merge($domains, $matches[$i][0]);
}
1分であなたは、私はそれよりも高速な方法があるとは思わない20Kラインを抽出することができるならば... –
'preg_match_all'行を行単位で実行していますか?どうして? – revo
なぜ 'array_merge'を使うのですか?' $ urls [] = $ $ [$ i] [0] 'と十分にマッチしないのですか?なぜ$は[$ i] 'であり、単に' $ matches'ではないのですか? – Toto