Home » A Palindrome Checker in PHP

A Palindrome Checker in PHP

Here’s a Palindrome Checker in PHP along with an explanation of how it works. A palindrome is a word, phrase, number, or other sequence of characters that reads the same forward and backward (ignoring spaces, punctuation, and capitalization).

Project Description

The palindrome checker will:

Allow users to input a string or number.
Check if the input is a palindrome.
Display the result indicating whether or not the input is a palindrome.

Complete Code

<?php
// Initialize variables
$result = "";
$error_message = "";

// Function to check if a string is a palindrome
function isPalindrome($input) {
    // Remove spaces, special characters, and convert the input to lowercase
    $processed_input = strtolower(preg_replace("/[^A-Za-z0-9]/", "", $input));

    // Reverse the processed string
    $reversed_input = strrev($processed_input);

    // Check if the original processed string is equal to the reversed string
    return $processed_input === $reversed_input;
}

// Check if the form has been submitted
if (isset($_POST['submit'])) {
    $input = $_POST['input'];

    // Validate that the input is not empty
    if (!empty($input)) {
        // Check if the input is a palindrome
        if (isPalindrome($input)) {
            $result = "Yes, '$input' is a palindrome!";
        } else {
            $result = "No, '$input' is not a palindrome.";
        }
    } else {
        $error_message = "Please enter a string or number.";
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Palindrome Checker</title>
</head>
<body>
    <h1>Palindrome Checker</h1>

    <!-- Display error message if any -->
    <?php if ($error_message): ?>
        <p style="color: red;"><?php echo $error_message; ?></p>
    <?php endif; ?>

    <!-- Form for input -->
    <form method="post" action="">
        <label for="input">Enter a string or number:</label>
        <input type="text" name="input" required value="<?php echo isset($input) ? htmlspecialchars($input) : ''; ?>">

        <br><br>

        <button type="submit" name="submit">Check Palindrome</button>
    </form>

    <!-- Display the result -->
    <?php if ($result): ?>
        <h2><?php echo $result; ?></h2>
    <?php endif; ?>
</body>
</html>

 

Explanation of the Code

1. Function to Check for Palindrome

function isPalindrome($input) {
    $processed_input = strtolower(preg_replace("/[^A-Za-z0-9]/", "", $input));
    $reversed_input = strrev($processed_input);

    return $processed_input === $reversed_input;
}

 

preg_replace(“/[^A-Za-z0-9]/”, “”, $input): This removes all non-alphanumeric characters (i.e., spaces, punctuation, special characters) from the input.
strtolower(): Converts the input string to lowercase to make the check case-insensitive.
strrev(): Reverses the processed string.
The function checks if the processed string is the same as its reversed version. If they are the same, the input is a palindrome.

2. Handling Form Submission and Input Validation

if (isset($_POST['submit'])) {
    $input = $_POST['input'];

    if (!empty($input)) {
        if (isPalindrome($input)) {
            $result = "Yes, '$input' is a palindrome!";
        } else {
            $result = "No, '$input' is not a palindrome.";
        }
    } else {
        $error_message = "Please enter a string or number.";
    }
}

 

This block checks if the form has been submitted using isset($_POST[‘submit’]).
It retrieves the user input from the form using $_POST[‘input’].
If the input is not empty, the script calls the isPalindrome() function to check if the input is a palindrome. The result is stored in the $result variable.
If the input is empty, an error message is displayed asking the user to provide valid input.

3. HTML Form for Input

<form method="post" action="">
    <label for="input">Enter a string or number:</label>
    <input type="text" name="input" required value="<?php echo isset($input) ? htmlspecialchars($input) : ''; ?>">

    <br><br>

    <button type="submit" name="submit">Check Palindrome</button>
</form>

 

The form allows users to input a string or number for palindrome checking.
The form uses the POST method to submit the data to the same PHP script.

4. Displaying the Result

<?php if ($result): ?>
    <h2><?php echo $result; ?></h2>
<?php endif; ?>

 

If a result is generated (i.e., after the form is submitted), it is displayed on the webpage.

How the Palindrome Checker Works

User Input: The user enters a string or number in the input field.
Form Submission: When the user clicks the “Check Palindrome” button, the form data is sent to the PHP script via POST.
Validation: The script checks if the input is not empty. If the input is valid, it proceeds to the palindrome check.
Palindrome Check: The isPalindrome() function processes the input by removing non-alphanumeric characters and converting it to lowercase. The script then checks if the processed string is the same as its reverse.
Result Display: The result (“Yes, it is a palindrome!” or “No, it is not a palindrome.”) is displayed.

Example Inputs and Outputs

Input: “madam”
Output: Yes, ‘madam’ is a palindrome!

Input: “Hello”
Output: No, ‘Hello’ is not a palindrome.

Input: “A man, a plan, a canal, Panama”
Output: Yes, ‘A man, a plan, a canal, Panama’ is a palindrome!

Potential Improvements

Handling Numbers: Extend the functionality to handle numeric palindromes (e.g., 12321).
Multiple Palindrome Types: Add support for checking word-level palindromes in phrases or sentences.
Styling: Use CSS to style the form and result for a better user experience.
This simple PHP project is great for practicing form handling, string manipulation, and conditional logic. It shows how to work with both client-side input and server-side processing efficiently.

You may also like