Kelimenin tam anlamıyla sadece yapıyorsun, her şeyden önce, dozens, her minute, o zaman ben bu durumda performansı hakkında korkunç endişe olmaz. Bu maçı oldukça hızlı ve ben size desenler dizi yineleme ve ayrı ayrı bu gibi preg_match arayarak bir performans sorunu var gidiyoruz sanmıyorum:
$matches = false;
foreach ($pattern in $pattern_array)
{
if (preg_match($pattern, $page))
{
$matches = true;
}
}
Sen gerçekten de bazı insanlar gibi or
operatör düşündüren kullanarak tek bir bütün desenleri birleştirebilirsiniz, ama sadece bir |
ile birlikte onlara tokat yok. Bu kötü kıracak senin desen varsa contain veya operatör.
Ben en azından gibi parantez kullanarak desen gruplandırma öneriyoruz:
foreach ($pattern in $patterns)
{
$grouped_patterns[] = "(" . $pattern . ")";
}
$master_pattern = implode($grouped_patterns, "|");
Ama ... Ben bu hızlı olma biter eğer gerçekten emin değilim. Something bu preg_match veya PHP olsun, içlerinden döngü vardır. Sanırım olsaydı ben bireysel maçlar okumak ve korumak için hızlı ve kolay yakın olacağını tahmin ediyorum.
Performans Burada aradığınızı ise son olarak, yapmam gereken en önemli şey olmayan regex onay "içeren dize" basit içine maçlar çekin olduğunu düşünüyorum. Ben çek bazı "Bu Site Closed" eğer sayfada görmek isteyen gibi basit bir dize kontroller olması gerektiğini hayal ediyorum.
Yani bu yapıyor:
foreach ($string_to_match in $strings_to_match)
{
if (strpos($page, $string_to_match) !== false))
{
// etc.
}
}
foreach ($pattern in $pattern_array)
{
if (preg_match($pattern, $page))
{
// etc.
}
}
ve preg_match()
mümkün olduğunca çok kaçınarak muhtemelen en iyi kazanç olacak. strpos()
preg_match()
göre bir lot hızlıdır.