Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP Filesystem fnmatch() Function



The PHP Filesystem fnmatch() function is used to match filename or string against a given pattern. The function can check if the given string can match the given shell wildcard pattern. This function is not implemented on Windows platforms.

Syntax

Below is the syntax of the PHP Filesystem fnmatch() function −

bool fnmatch ( string $pattern , string $string [, int $flags = 0 ] )

Parameters

Here are the required and optional parameters of the fnmatch() function −

Sr.No Parameter & Description
1

pattern(Required)

The pattern you want to match. This includes characters:

  • * matches any number of characters.
  • ? matches exactly one character.
  • [] matches any one of the enclosed characters.
  • 2

    string(Required)

    It is the string or filename you want to match.

    3

    flags(Required)

    Flags to modify the behavior of the match. Possible values are: FNM_NOESCAPE, FNM_PATHNAME, FNM_PERIOD

    Return Value

    It returns TRUE if there is a match, or FALSE on failure.

    PHP Version

    The fnmatch() function was first introduced as part of core PHP 4.3.0 and work well with the PHP 5, PHP 7, PHP 8.

    Example

    The PHP Filesystem fnmatch() function returns a Boolean value that can be either TRUE or FALSE, you can verify this using conditional expressions like if statements and ternary operators. View the following example of code −

    <?php
       //Define pattern here to match
       $pattern = "*.txt";
       $string = "sample.txt";
    
       if (fnmatch($pattern, $string)) {
          echo "The string matches the pattern.";
       } else {
          echo "The string does not match the pattern.";
       }
    ?>
    

    Output

    Here is the output of the above PHP code −

    The string matches the pattern.   
    

    Example

    This code creates a message based on whether the string "phpcodes.txt" matches a particular pattern. After comparing $colour to the pattern "*phpcode[zs].txt", the `fnmatch() function returns the results: Any character matches *, The filename must contain phpcode, [zs] shows that phpcode must come after z or s, There must be a .txt at the end.

    <?php
       $color = "phpcodes.txt";
       if(fnmatch("*phpcode[zs].txt", $color)) {
          echo "phpcodes";
       } else {
          echo "Color not found!";
       }
    ?>
    

    Output

    This will generate the below result −

    phpcodes
    

    Example

    Now we will use flags parameter to show the usage in the function fnmatch(). For example if the ? wildcard matches any single character so the function returns true.

    <?php
       $pattern = "file?.txt";
       $string = "file1.txt";
    
       if (fnmatch($pattern, $string, FNM_PERIOD)) {
          echo "The string matches the pattern.";
       } else {
          echo "The string does not match the pattern.";
       }
    ?> 
    

    Output

    This will produce the following result −

    In case the pattern and string matches -

    The string matches the pattern
    

    In case the pattern and string does not match -

    The string does not match the pattern.
    

    Example

    In this code we will check if the file name ends with .jpg. Since image.jpg matches the pattern, it will print the success message.

    <?php
       $file = "picture.jpg";
       if (fnmatch("*.jpg", $file)) {
          echo "This is a JPEG image.";
       } else {
          echo "This is not a JPEG image.";
       }
    ?> 
    

    Output

    This will lead to the following outcome −

    This is a JPEG image.
    

    Example

    In this code we will check if the file name starts with "index" and ends with .pdf. So if the file matches the pattern, it will print the success message.

    <?php
       $file = "index2024.pdf";
       if (fnmatch("index*.pdf", $file)) {
          echo "This is an index file.";
       } else {
          echo "This is not an index file.";
       }
    ?> 
    

    Output

    This will create the following output −

    This is a index file.
    

    Common Use Cases

    • It can be used to filter file lists.
    • For matching user input against predefined patterns.
    • For validating filenames or extensions.

    Summary

    Using PHP's fnmatch() function to match a filename or string with a given pattern. Similar to shell commands, it is mainly useful for identifying patterns that replicate wildcards.

    php_function_reference.htm
    Advertisements