i test etmek gerekir dizeleri herhangi bir 'merhaba', 'ben ben' varsa, 'aptal' $ ohreally, if even one of them exists my test is over, and i have the knowledge that neither of the others will occur if one of them has. denilen uzun dize var
Bu koşullar altında ben bu arama yazmak için en verimli yolda yardım için soruyorum,
strpos () böyle 3 kez?
if (strpos ($ohreally, 'hello')){return false;}
else if (strpos ($ohreally, 'i am')){return false;}
else if (strpos ($ohreally, 'dumb')){return false;}
else {return true;}
ya da bir preg_match?
if (preg_match('hello'||'i am'||'dumb', $ohreally)) {return false}
else {return true};
Ben preg_match kodu yanlış olduğunu biliyorum kimse bunun doğru sürümünü sunmak mümkün olsaydı, ben gerçekten takdir ediyorum.
Thank You!
Answer
Cletus söylediklerini okudum ve deney middaparka feryat yaptım lütfen. Ben de uzun ve kısa çeşitli dizeleri bir mirco zaman testi yaptım. Bu sonuçlar ile
Eğer en azından en muhtemel dan SİPARİŞ onları oluşan dize değerlerinin olasılığını bilmek, IF. (I /hello|i am|dumb/
veya /i am|dumb|hello/
arasındaki, yani regex kendisi sipariş bir prezentabl farklı fark etmedi.
Diğer taraftan ardışık olarak strpos olasılığı tüm fark. Örneğin 'merhaba' eğer 'ben varım'% 7 ve zamanın 'aptal' yüzde 3,% 90 olur. Önce 'merhaba' kontrol ve kısa sürede işlevini çıkmak için kodunuzu düzenlemek istiyoruz.
Benim microtime testleri bu gösteriyor.
iğne ve birinci, ikinci ve üçüncü strpos () uygulama sırasıyla bulunan edildiği haystacks A, B ve C için, zaman aşağıdaki gibidir,
strpos:
A: 0.00450 seconds // 1 strpos()
B: 0.00911 seconds // 2 strpos()
C: 0.00833 seconds // 3 strpos()
C: 0.01180 seconds // 4 strpos() added one extra
and for preg_match:
A: 0.01919 seconds // 1 preg_match()
B: 0.02252 seconds // 1 preg_match()
C: 0.01060 seconds // 1 preg_match()
sayılar gösterdiği gibi, strpos hızlı 4rth yürütülmesi kadar, bu yüzden ben kontrol etmek için sadece 3, alt-sokmaları beri i yerine onu kullanıyor olacak:)