When working with files in PHP, it is important to ensure that the correct file extension is being used. This not only ensures that the file is in the correct format, but also helps to prevent any potential security risks. One way to check for file extensions in PHP is by using regular expressions.
Regular expressions, also known as regex, are a powerful tool for pattern matching and string manipulation. They allow for complex search and replace operations, making them perfect for checking file extensions in PHP.
To begin, let's create a simple PHP script that will check for a specific file extension. For this example, we will use the .txt extension. Our script will take in a file name as input and use a regular expression to check if it ends with .txt.
```
<?php
// Input file name
$fileName = "example.txt";
// Regular expression to check for .txt extension
$regex = "/\.txt$/";
// Check if file name ends with .txt
if (preg_match($regex, $fileName)) {
echo "File extension is correct.";
} else {
echo "File extension is incorrect.";
}
```
In the above code, we first define our input file name and then create a regular expression using the `preg_match()` function. The `/\.txt$/` pattern specifies that the file name should end with .txt. The `\` is used to escape the `.` character, as it is a special character in regular expressions.
Next, we use the `preg_match()` function to check if the regular expression matches the file name. If it does, the script will output "File extension is correct." Otherwise, it will output "File extension is incorrect."
Now, let's take this a step further and make our script more dynamic by allowing the user to input their own file name.
```
<?php
// Get user input
$fileName = readline("Enter file name: ");
// Regular expression to check for .txt extension
$regex = "/\.txt$/";
// Check if file name ends with .txt
if (preg_match($regex, $fileName)) {
echo "File extension is correct.";
} else {
echo "File extension is incorrect.";
}
```
In the above code, we use the `readline()` function to get the user's input for the file name. Then, we use the same regular expression as before to check for the .txt extension. This allows the user to test different file names and see if they have the correct extension.
But what if we want to check for multiple file extensions? This is where regular expressions really shine. We can use the `|` character to specify multiple options within the regular expression.
```
<?php
// Input file name
$fileName = "example.jpg";
// Regular expression to check for .txt, .jpg, or .png extension
$regex = "/\.(txt|jpg|png)$/";
// Check if file name ends with .txt, .jpg, or .png
if (preg_match($regex, $fileName)) {
echo "File extension is correct.";
} else {
echo "File extension is incorrect.";
}
```
In the above code, we have added the `.jpg` and `.png` extensions to our regular expression. Now, if the input file name ends with any of these extensions, the script will output "File extension is correct." Otherwise, it will output "File extension is