How to check, if a php string contains only english letters and digits?

PhpRegex

Php Problem Overview


In JS I used this code:

if(string.match(/[^A-Za-z0-9]+/))

but I don't know, how to do it in PHP.

Php Solutions


Solution 1 - Php

Use preg_match().

if (!preg_match('/[^A-Za-z0-9]/', $string)) // '/[^a-z\d]/i' should also work.
{
  // string contains only english letters & digits
}

Solution 2 - Php

if(ctype_alnum($string)) {
    echo "String contains only letters and numbers.";
}
else {
    echo "String doesn't contain only letters and numbers.";
}

Solution 3 - Php

You can use preg_match() function for example.

if (preg_match('/[^A-Za-z0-9]+/', $str))
{
  // ok...
}

Solution 4 - Php

if you need to check if it is English or not. you could use below function. might help someone..

function is_english($str)
{
    if (strlen($str) != strlen(utf8_decode($str))) {
        return false;
    } else {
        return true;
    }
}

Solution 5 - Php

Have a look at this shortcut

if(!preg_match('/[^\W_ ] /',$string)) {

}

the class [^\W_] matches any letter or digit but not underscore . And note the ! symbol . It will save you from scanning entire user input .

Solution 6 - Php

if(preg_match('/[^A-Za-z0-9]+/', $str)) {
    // ...
}

Solution 7 - Php

if (preg_match('/^[\w\s?]+$/si', $string)) {
    // input text is just English or Numeric or space
}

Solution 8 - Php

if(preg_match('/^[A-Za-z0-9]+$/i', $string)){ // '/^[A-Z-a-z\d]+$/i' should work also
// $string constains both string and integer
}

The carrot was in the wrong place so it would have search for everything but what is inside the square brackets. When the carrot is outside it searches for what is in the square brackets.

Solution 9 - Php

PHP can compare a string to a regular expression using preg_match(regex, string) like this:

if (!preg_match('/[^A-Za-z0-9]+/', $string)) {
	// $string contains only English letters and digits
}

Solution 10 - Php

The following code will take care about special characters and spaces

$string = 'hi, how are you ?';
if (!preg_match('/[^A-Za-z0-9 #$%^&*()+=\-\[\]\';,.\/{}|":<>?~\\\\]+/', $string)) // '/[^a-z\d]/i' should also work.
{
    echo 'english';
}else
{
    echo 'non-english';
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDanny FoxView Question on Stackoverflow
Solution 1 - PhpFrosty ZView Answer on Stackoverflow
Solution 2 - PhpvineethView Answer on Stackoverflow
Solution 3 - PhpeviloneView Answer on Stackoverflow
Solution 4 - Phpshakee93View Answer on Stackoverflow
Solution 5 - PhpHalfWebDevView Answer on Stackoverflow
Solution 6 - PhpVitaminView Answer on Stackoverflow
Solution 7 - PhpRamin RabieeView Answer on Stackoverflow
Solution 8 - Phpuser3439891View Answer on Stackoverflow
Solution 9 - PhpSaurabhView Answer on Stackoverflow
Solution 10 - PhpFiras Abd AlrahmanView Answer on Stackoverflow