downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

strpbrk> <strncasecmp
[edit] Last updated: Fri, 23 Dec 2011

view this page in

strncmp

(PHP 4, PHP 5)

strncmpİlk n karakteri ikil olarak karşılaştırır

Açıklama

int strncmp ( string $d1 , string $d2 , int $uzunluk )

Karşılaştırma için kullanılacak dizge uzunluğunun üst sınırının belirtilebilmesi dışında strcmp() işlevi gibidir.

Karşılaştırma harf büyüklüğüne duyarlı olarak yapılır.

Değiştirgeler

d1

İlk dizge.

d2

İkinci dizge.

uzunluk

Karşılaştırmada kullanılacak karakter sayısı.

Dönen Değerler

d1 dizgesi d2 dizgesinden küçükse sıfırdan küçük bir değer; d1 dizgesi d2 dizgesinden büyükse sıfırdan büyük bir değer; d1 dizgesi ile d2 dizgesi aynıysa sıfır döndürür.

Ayrıca Bakınız

  • preg_match() - Bir düzenli ifadeyi eşleştirmeye çalışır
  • strcmp() - İkil olarak güvenilir dizge karşılaştırması yapar
  • strcasecmp() - İkil olarak güvenilir ve harf büyüklüğüne duyarsız dizge karşılaştırması yapar
  • substr() - Dizgenin bir kısmını döndürür
  • stristr() - Harf büyüklüğüne duyarsız olarak ilk alt dizgeyi bulur
  • strncasecmp() - İlk n karakteri ikil ve harf büyüklüğüne duyarsız olarak karşılaştırır
  • strstr() - İlk alt dizgeyi bulur



strpbrk> <strncasecmp
[edit] Last updated: Fri, 23 Dec 2011
 
add a note add a note User Contributed Notes strncmp
bobvin at pillars dot net 19-May-2011 07:25
For checking matches at the beginning of a short string, strpos() is about 15% faster than strncmp().

Here's a benchmark program to prove it:

<?php
$haystack
= "abcdefghijklmnopqrstuvwxyz";
$needles = array('abc', 'xyz', '123');
foreach (
$needles as $needle) {
 
$times['strncmp'][$needle] = -microtime(true);
  for (
$i = 0; $i < 1000000; $i++) {
   
$result = strncmp($haystack, $needle, 3) === 0;
  }
 
$times['strncmp'][$needle] += microtime(true);
}
foreach (
$needles as $needle) {
 
$times['strpos'][$needle] = -microtime(true);
  for (
$i = 0; $i < 1000000; $i++) {
   
$result = strpos($haystack, $needle) === 0;
  }
 
$times['strpos'][$needle] += microtime(true);
}
var_export($times);
?>
elloromtz at gmail dot com 19-Apr-2010 05:25
if length is 0 regardless what the two strings are, it will return 0

<?php
strncmp
("xybc","a3234",0); // 0
strncmp("blah123","hohoho", 0); //0
?>
codeguru at crazyprogrammer dot cba dot pl 24-Jan-2008 11:07
I ran the following experiment to compare arrays.

1 st - using (substr($key,0,5 == "HTTP_") & 2 nd - using (!strncmp($key, 'HTTP_', 5))

I wanted to work out the fastest way to get the first few characters from a array

BENCHMARK ITERATION RESULT IS:
if (substr($key,0,5 == "HTTP_").... -   0,000481s
if (!strncmp($key, 'HTTP_', 5)).... -     0,000405s

strncmp() is 20% faster than substr() :D

<?php
// SAMPLE FUNCTION
function strncmp_match($arr)
{
foreach (
$arr as $key => $val)
    {
   
//if (substr($key,0,5 == "HTTP_")
   
if (!strncmp($key, 'HTTP_', 5))   
        {
   
$out[$key] = $val;
        }
    }
return
$out;
}

// EXAMPLE USE
?><pre><?php
print_r
(strncmp_match($_SERVER));
?></pre>

will display code like this:

Array
(
    [HTTP_ACCEPT] => XXX
    [HTTP_ACCEPT_LANGUAGE] => pl
    [HTTP_UA_CPU] => x64
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_USER_AGENT] => Mozilla/4.0
                                    (compatible; MSIE 7.0;
                                     Windows NT 5.1;
                                    .NET CLR 1.1.4322;
                                    .NET CLR 2.0.50727)
    [HTTP_HOST] => XXX.XXX.XXX.XXX
    [HTTP_CONNECTION] => Keep-Alive
    [HTTP_COOKIE] => __utma=XX;__utmz=XX.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
)
Anonymous 17-Apr-2002 04:46
strncmp("sample","sam",4) returns 1 because the final requirement is if one string terminates before len, then the other must also terminate at that position. 

You can imagine that all your strings have one more final, invisible "termination" character.  If that termination character happens to be within in len, then it must match, too.

For instance, write that termination character with, say, the sequence "\0". Then you can equivalently consider that function call as strncmp("sample\0","sam\0",4).

So, the "p" in "sample" does not match the termination character in "sam".

 
show source | credits | sitemap | contact | advertising | mirror sites