Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

preg_match() [function.preg-match]: Unknown modifier [closed]

Tags:

php

preg-match

I am getting this error message:

preg_match() [function.preg-match]: Unknown modifier '=' in /home/public_html/checkem.php on line 13

When I go to the following line I get this:

<?php
    //thx to http://www.phpit.net/code/valid-email/ for valid_email
    function valid_email($email) {
    // First, we check that there's one @ symbol, and that the lengths are right
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
        // Email invalid because wrong number of characters in one section, or wrong number @ symbols.
        return false;
    }
    // Split it into sections to make life easier
    $email_array = explode("@", $email);
    $local_array = explode(".", $email_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) {
        if (!preg_match("/^(([A-Za-z0-9!#$%&#038;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&#038;14.'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) {
            return false;
        }
    }  
    if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
        $domain_array = explode(".", $email_array[1]);
            if (sizeof($domain_array) < 2) {
                return false; // Not enough parts to domain
            }
        }
    }
?>

I have changed ereg to preg_match and then wrapped the code with // because ereg was showing up as deprecated. I am still a beginner at coding and any help would be much appreciated.

like image 381
user1915187 Avatar asked Nov 12 '22 14:11

user1915187


1 Answers

if / is your pattern delimiter, than it must be masked with a backslash in the pattern. And the backslash for a PHP string must (should) be masked as well.

preg_match("/^(([A-Za-z0-9!#$%&#038;'*+/=?^_`{|}~-][A-Za-z0-9!#$%&#038;14.'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])

preg_match("/^(([A-Za-z0-9!#$%&#038;'*+\\/=?^_`{|}~-][A-Za-z0-9!#$%&#038;14.'*+\\/=?^_`{|}~\\.-]{0,63})|(\\"[^(\\\\|\\")]{0,62}\\"))$/", $local_array[$i])

BurninLeo

like image 155
BurninLeo Avatar answered Nov 15 '22 05:11

BurninLeo