Performans: PHP Hata İşleme ve Regex

4 Cevap php

Ben iki soru var, bir ağız ve bir programmy olduğunu!

1) PHP bildirimlerle ilgili raporlama bu hataları rapor ve o hata ne tür anlamaya zaman alır (performnace sorunlara neden olur) ama error_reporting kapalı ise, bu aynı durumda olduğunu biliyorum? Ben hala çıkışa görüntülemeden kadar performansını yavaşlatabilir ama değil sanırım? Bu doğru mudur?

2) Biri de bana bu açmak yardımcı olabilir:

//Remove characters. Anything apart from a-z(upper and lower case), numbers, periods [.]
$cleanstring = ereg_replace("[^A-Za-z0-9]^[,]^[.]^[_]^[:]", "", $critvalue);

, Daha etkin ve preg replace yararlanarak yerine bir şey yapmak olarak ereg replace. '^' Ben sadece işlevini yerine çalıştı ama ben bir Bilinmeyen değiştirici olsun

Ayrıca, performansı iyileştirmek için bazı bağlantılar olsun ve siz kullanmak ipuçları oynamak harika olurdu!

Tüm teşekkürler

4 Cevap

1..) Kapalı raporlama Torna hata en çok zaman tüketen hata raporlama sürecinin bir parçası hata mesajı çıktısı ya da (ben ölçülen değil, bilmiyorum özel hata işleyicileri çağırıyor ya, performansını artırmak gerekir. Bu benim tahminim .)

2). PCRE düzenli ifadeler, sizin RE sınırlandırmak için gerekli docs bakabilirsiniz. Ayrıca, RE biraz kırık görünüyor, ben böyle bir şey (boş dize ile bir harf, bir sayı, virgül, nokta, çizgi ya da kolon değil bir şey değiştirmek) olması gerekiyordu düşünüyorum:

preg_replace('/[^A-Za-z0-9,._:]/', '', $string);
# If you want to support characters in any language (like umlauts in german,
# for example - öäü), not just the letters a-z, you should use the unicode
# properties:
# http://php.net/manual/en/regexp.reference.unicode.php
preg_replace('/[^\PL\PN,._:]/', '', $string);

Eğer gerçekten sadece 0-9 ve AZ (harf duyarsız) ve süresini istiyorsanız:

//Remove characters all non-listed characters from string
$cleanString = preg_replace('/[^a-z0-9.]/i', '', $unCleanString);

Ayrıca virgül eklemek istiyorsanız, çizgi ve kolon:

$cleanString = preg_replace('/[^a-z0-9.,_:]/i', '', $unCleanString);

For the error reporting:
It is faster to switch error reporting off.

Another option is to try and write code that does not generate warnings and notices but instead does proper checking. So, if some notice/error does occur, log it and fix the code.
I think that in the end this is the winning strategy

Preg_ işlevleri regex (Perl regex-es gibi) ayrılmış bekliyoruz:

preg_replace('/[a-zA-Z\d.]++/', '', $str);
//Remove characters. Anything apart from a-z(upper and lower case), 
numbers, periods
preg_replace('/[A-Za-z0-9.]/', '',$string);

Read more