Strspn noktası nedir?

5 Cevap php

Işte bugün kullandığınız herhangi bir sebeple gelip çalışıyorlardı strspn.

Ben hiç bir yararlı bir şekilde uygulanmıştır olmadığını görmek için google kod aradı ve boş geldi. Ben sadece gerçekten başka bir dizeden sadece karakterleri içeren bir dize ilk segmentinin uzunluğunu bilmek gerekir hangi bir durum düşünemiyorum. Herhangi bir fikir?

5 Cevap

Eğer PHP kılavuzuna bağlantı da, strspn() function strlen(), strcpy(), strcmp(), vs ile birlikte, C kütüphaneleri gelmektedir

strspn() karakterleri değerler kümesi biri eşleşirse test, karakteri ile bir dize karakter üzerinden toplama için uygun bir alternatiftir. Tokenizers yazarken zaman yararlıdır. Için alternatif strspn() aşağıdaki gibi tekrarlayan ve hata eğilimli kod sürü olacaktır:

for (p = stringbuf; *p; p++) {
  if (*p == 'a' || *p == 'b' || *p = 'c' ... || *p == 'z') {
    /* still parsing current token */
  }
}

Eğer hata nokta olabilir? :-)

Tabii ki normal ifade eşlemesi için yerleşik desteği ile bir dilde, strspn() biraz mantıklı. C DSL için ilkel bir ayrıştırıcı yazarken ama, oldukça şık bulunuyor.

Bu ANSI C fonksiyonu strspn() dayanıyor. Hiçbir üst düzey dize sınıf var nerede, düşük seviyeli C ayrıştırma kodunda yararlı olabilir. Bu faydalı dize ayrıştırma fonksiyonları çok vardır PHP, önemli ölçüde daha az yararlıdır.

Ben fişliyor ve kullanıcı hata başladı yerden bildirdiğiniz için büyük düşünüyorum. MySQL hata oluştu yerden sorgunun parçası döner gibi.

: Kullanıcı geçerli değil onun yorumun hangi bölümünün bilmenizi sağlar, bu işlevi, bakın

function blacklistChars($yourComment){

$blacklistedChars = "!@#$%^&*()";
$validLength = strcspn($yourComment, $blacklistedChars);
if ($validLength !== strlen($yourComment))
{

    $error = "Your comment contains invalid chars starting from here: `" . 
        substr($yourComment, (int) '-' . $validLength) . "`";

    return $error;
}

return false;
}

$yourComment = "Hello, why can you not type and $ dollar sign in the text?"; 
$yourCommentError = blacklistChars($yourComment);

if ($yourCommentError <> false)
echo $yourCommentError;

Eh, benim anlayış tarafından, bu regex olarak aynı şey:

^[set]*

Set bulunacak karakterler içeren dize nerede.

Bir dize ve bölünmenin başında herhangi bir sayı veya metin aramak için kullanabilirsiniz.

Bu php kod taşıma zaman yararlı olacaktır görünüyor.

Bu atoi gibi işlevler için specificaly yararlıdır - Eğer bir sayıya dönüştürmek istediğiniz bir dize var ve set olmayan bir şey ile uğraşmak istemiyorum "- ,0123456789"

Ama evet, bu kullanımı sınırlıdır.