Bird
Raised Fist0
PHPprogramming~5 mins

String comparison functions in PHP

Choose your learning style10 modes available
Introduction

String comparison functions help you check if two pieces of text are the same or which one comes first in order. This is useful when sorting or checking user input.

Checking if a username entered matches a stored username.
Sorting a list of words alphabetically.
Comparing passwords or codes for equality.
Finding if one string appears before another in dictionary order.
Validating form inputs against expected values.
Syntax
PHP
strcmp(string $str1, string $str2): int
strcasecmp(string $str1, string $str2): int
strncmp(string $str1, string $str2, int $length): int
strncasecmp(string $str1, string $str2, int $length): int

These functions return 0 if the strings are equal.

A negative number means the first string is less than the second; a positive means it is greater.

Examples
Compare two strings exactly, case-sensitive.
PHP
$result = strcmp("apple", "banana");
// $result will be negative because "apple" comes before "banana"
Compare two strings ignoring uppercase or lowercase differences.
PHP
$result = strcasecmp("Apple", "apple");
// $result will be 0 because comparison ignores case
Compare only the first few characters of two strings.
PHP
$result = strncmp("applepie", "applesauce", 5);
// Compares only first 5 characters
Compare first few characters ignoring case.
PHP
$result = strncasecmp("ApplePie", "appleSauce", 5);
// Case-insensitive comparison of first 5 characters
Sample Program

This program compares strings using different functions and prints what it finds. It shows case-sensitive and case-insensitive comparisons, and compares full strings or just the first few characters.

PHP
<?php

// Compare two strings case-sensitive
$result1 = strcmp("hello", "Hello");

// Compare two strings ignoring case
$result2 = strcasecmp("hello", "Hello");

// Compare first 3 characters case-sensitive
$result3 = strncmp("hello", "helium", 3);

// Compare first 3 characters ignoring case
$result4 = strncasecmp("Hello", "heLium", 3);

// Print results
if ($result1 === 0) {
    echo "strcmp: Strings are equal\n";
} elseif ($result1 < 0) {
    echo "strcmp: 'hello' is less than 'Hello'\n";
} else {
    echo "strcmp: 'hello' is greater than 'Hello'\n";
}

if ($result2 === 0) {
    echo "strcasecmp: Strings are equal ignoring case\n";
}

if ($result3 === 0) {
    echo "strncmp: First 3 characters are equal\n";
} else {
    echo "strncmp: First 3 characters are different\n";
}

if ($result4 === 0) {
    echo "strncasecmp: First 3 characters are equal ignoring case\n";
} else {
    echo "strncasecmp: First 3 characters are different ignoring case\n";
}
OutputSuccess
Important Notes

Remember that strcmp and strncmp are case-sensitive.

Use strcasecmp and strncasecmp when you want to ignore letter case.

These functions return an integer, not a boolean true/false.

Summary

String comparison functions check if texts are equal or which comes first.

Use strcmp and strncmp for case-sensitive checks.

Use strcasecmp and strncasecmp to ignore case differences.

Practice

(1/5)
1. Which PHP function compares two strings in a case-sensitive way and returns 0 if they are exactly equal?
easy
A. strncmp
B. strcasecmp
C. strncasecmp
D. strcmp

Solution

  1. Step 1: Understand case sensitivity in string comparison

    strcmp compares two strings exactly, including case.
  2. Step 2: Identify function behavior

    strcmp returns 0 if strings are exactly equal, considering case.
  3. Final Answer:

    strcmp -> Option D
  4. Quick Check:

    Case-sensitive compare = strcmp [OK]
Hint: Case matters? Use strcmp or strncmp [OK]
Common Mistakes:
  • Confusing strcmp with strcasecmp (case-insensitive)
  • Using strncasecmp for full string compare
  • Thinking strcmp ignores case
2. Which of the following is the correct syntax to compare first 3 characters of two strings ignoring case in PHP?
easy
A. strncasecmp($str1, $str2, 3)
B. strncmp($str1, $str2, 3)
C. strcasecmp($str1, $str2, 3)
D. strcmp($str1, $str2, 3)

Solution

  1. Step 1: Identify function for case-insensitive partial compare

    strncasecmp compares first N characters ignoring case.
  2. Step 2: Check syntax correctness

    strncasecmp($str1, $str2, 3) correctly compares first 3 chars case-insensitively.
  3. Final Answer:

    strncasecmp($str1, $str2, 3) -> Option A
  4. Quick Check:

    Partial case-insensitive compare = strncasecmp [OK]
Hint: Partial + ignore case = strncasecmp [OK]
Common Mistakes:
  • Using strncmp which is case-sensitive
  • Passing length to strcasecmp (no length param)
  • Using strcmp with length parameter
3. What will be the output of the following PHP code?
$result = strcasecmp('Hello', 'hello');
echo $result;
medium
A. -1
B. 0
C. 1
D. Error

Solution

  1. Step 1: Understand strcasecmp behavior

    It compares strings ignoring case and returns 0 if equal.
  2. Step 2: Compare 'Hello' and 'hello'

    Ignoring case, both strings are equal, so result is 0.
  3. Final Answer:

    0 -> Option B
  4. Quick Check:

    strcasecmp('Hello', 'hello') = 0 [OK]
Hint: strcasecmp returns 0 if strings equal ignoring case [OK]
Common Mistakes:
  • Expecting 1 or -1 for equal strings
  • Confusing case-sensitive strcmp with strcasecmp
  • Thinking it throws error for case differences
4. Identify the error in this PHP code snippet:
if (strncmp('apple', 'Apple', 5) == 0) {
echo 'Match';
} else {
echo 'No match';
}
medium
A. No error, code works correctly
B. Use strcasecmp instead of strncmp for case-insensitive compare
C. Use strncasecmp instead of strncmp for case-insensitive compare
D. Change 5 to length of shorter string

Solution

  1. Step 1: Analyze strncmp behavior

    strncmp is case-sensitive, so 'apple' != 'Apple'.
  2. Step 2: Fix for case-insensitive compare

    Use strncasecmp to ignore case in first 5 chars.
  3. Final Answer:

    Use strncasecmp instead of strncmp for case-insensitive compare -> Option C
  4. Quick Check:

    Case-insensitive partial compare needs strncasecmp [OK]
Hint: strncmp is case-sensitive; use strncasecmp to ignore case [OK]
Common Mistakes:
  • Assuming strncmp ignores case
  • Using strcasecmp with length parameter
  • Changing length unnecessarily
5. You want to sort an array of strings alphabetically ignoring case in PHP. Which function is best to use as a comparison callback for usort?
hard
A. strcasecmp
B. strcmp
C. strncmp
D. strncasecmp

Solution

  1. Step 1: Understand sorting with case-insensitivity

    Sorting ignoring case requires a case-insensitive comparison function.
  2. Step 2: Choose correct function for full string compare ignoring case

    strcasecmp compares full strings ignoring case, ideal for sorting.
  3. Final Answer:

    strcasecmp -> Option A
  4. Quick Check:

    Case-insensitive full compare for sorting = strcasecmp [OK]
Hint: Sort ignoring case? Use strcasecmp as callback [OK]
Common Mistakes:
  • Using strcmp which is case-sensitive
  • Using strncmp or strncasecmp which compare partial strings
  • Passing no callback to usort
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard