PHP: + substr regexpi optimize

2 Cevap php

Ben sadece + substr preg_replace preg_replace kullanmaz ve böylece aşağıdaki PHP kodu optimize etmek için bir yolu var mı?

$type = substr( preg_replace('/([^a-z])/', '$2', strtolower($_GET["type"])) , 0, 3);

2 Cevap

Dürüst olmak gerekirse, ben basit tutmak ve geçersiz bir dize girdiyseniz sadece kullanıcıyı uyarmak olacaktır:

$type = $_GET['type'];
if (!preg_match('/^[a-z]{0,3}$/', $type)) {
    // Handle error properly here.
    die('Type argument must be a string of 0-3 lower case letters (a-z)');
}

Eğer gerçekten girişini düzeltmek istiyorsanız, orijinal çözüm, sadece biraz ince temizlenmiş olabilir edildi:

$type = substr(preg_replace('/[^a-z]+/', '', strtolower($_GET['type'])), 0, 3);

Insanlar açıklamalarda belirtildiği gibi, sizin örnek kod tür işlevsiz olduğunu, ama ben doğru yapmak istediklerini anlamak (ilk üç küçük alfabetik karakterleri almak), sonra bu bunu olmalıdır:

$type = preg_replace('/.*?([a-z])(?:.*?([a-z]))?(?:.*?([a-z]))?.*/', '$1$2$3', strtolower($_GET['type']));