Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Allow apostrophe when using ctype_alpha?

Tags:

validation

php

I know there's are other ways to do it, but I'm playing with validating a name field using ctype_alpha but allowing spaces, hyphens, and apostrophes.

Per another post on Stack, I was able to add the spaces no problem, but I'm thinking I have the syntax wrong for replacing multiple characters.

What I've used so far that works for validating that only letters and spaces are allowed:

if (ctype_alpha(str_replace(' ', '', $name)) === false) {
    echo'Name must contain letters and spaces only';
    exit;
}

This removes any spaces before checking that the string is letters only. I was looking to simply add to this to also allow hyphens and apostrophes.

What I've tried for adding hyphens and/or apostrophes (doesn't work):

if (ctype_alpha(str_replace(' ', '', '-', '', $name)) === false) {
    echo'Name must contain letters and spaces only';
    exit;
}

My guess is that adding a second string in the str_replace function is not proper syntax, but being a PHP newb, I'm having a hard time figuring out how to phrase my searches to find the correct syntax.

Also, am I correct in saying that '\w' will cover my apostrophes once I figure out the correct syntax for the str_replace function?

Genuinely appreciate the help guys. You're all invaluable and I try hard not to abuse it.

like image 488
sforcash Avatar asked Sep 19 '26 21:09

sforcash


1 Answers

the proper syntax, as stated in the manual is:

if (ctype_alpha(str_replace(array(' ', '', '-'), '', $name)) === false) {
    echo'Name must contain letters and spaces only';
    exit;
}

With apostrophe

if (ctype_alpha(str_replace(array(' ', '', '-',"'"), '', $name)) === false) {
    echo'Name must contain letters and spaces only';
    exit;
}

Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!