简体   繁体   中英

preg_replace phone number sanitizing for international numbers

I have a snip of PHP code that we use to strip out spaces and non numericals from phone numbers in PHP which works great and it removes the leading 0 from the phone number as well:

substr(preg_replace('/[^0+a-zA-Z0-9]+/', '', $phone), 1);

However in some scenarios the leading number is not a 0 it will be a 1 and we don't want them stripped.

so if the number was 0312345678 it needs the leading 0 stripped off If the number however was 1800123456 it should not strip the leading 1 from the number

how can I adjust the replace to not strip all 1st digits off and only strip it off if its a 0, while retaining the remaining preg_replace functions as currently using substr strips the first digit regardless of what it is?

You can use

$phone = preg_replace('/^0|[^a-zA-Z0-9+]+/', '', $phone)

The regex will remove a 0 at the start of string with the ^0 alternative, and the [^a-zA-Z0-9+]+ will remove any one or more chars other than ASCII letters, digits and + anywhere else in the string.

See the regex demo .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM