2010-11-18 17 views
0

En az bir soru işareti içerip içermediğini belirlemek istediğiniz bir dizem var. eğer yanlış geri dönerse. Onu aramaya çalıştım, ama arayış gibi görünüyor özel bir karakter. Nasıl devam edersiniz?regex return false

Teşekkürler.

+0

Özellikle bir normal ifadeyi ister misiniz, yoksa başka bir mantık sizinle çalışır mı? – BeemerGuy

+0

regex olması gerekiyor. cakephp'deki özel doğrulama parçasıdır. teorik olarak, strpos ile yapılabilir ama sonra bunun için ekstra bir fonksiyon uygulamak zorunda kalacaktı. Sıkı karşılaştırma ve regeeks olmayan bir çözüm için – ondrobaco

cevap

3

Regex gerekmiyor.

if (strpos($str, '?') !== false) { 
    return false; 
} 

// Shorter but always executes due to lack of a conditional structure 
// May not be what you need if you're doing various other checks 
return strpos($str, '?') === false; 

Ama haklısın, ? regex özel bir karakterdir. Regex motorunun sıfıra veya bir şeyin varlığına bakmasını söyler.

Daha karmaşık bir normal ifadede bir soru işareti olup olmadığını kontrol ediyorsanız, Paul Kehrer says olarak bir ters eğik çizgi ile kaçmanız yeterlidir.

+0

+ 1! Her durumda, regex çözümünü sağlamak için – jwueller

5

Sadece kaçmak gerekir? regex'inde. preg_match('/\?/','A string?',$matches) bir eşleşme için geri dönecek? eğer varsa.

Bunun için strpos()'u kullanabilirsiniz. Bulmak için normal bir motora ihtiyacınız olmadığı için daha hızlı olur mu?

+0

+1. – BoltClock

+0

aslında başka bir şekilde ona ihtiyacım var .. soru işareti yoksa, gerçek geri dönüş. En az bir soru işareti varsa false döndürme – ondrobaco

+0

preg_match, eşleşen eşleşmelere karşılık gelen bir int döndürür, böylece ekleyebilirsiniz! Bunu kullanırsan ve sen de ayarlanacaksın. –

İlgili konular