nn2 nn2 - 1 month ago 20
PHP Question

PHP strip punctuation

Let's say I have this:

$hello = "Hello, is StackOverflow a helpful website!? Yes!";


and I want to strip punctuation so it outputs as:

hello_is_stackoverflow_a_helpful_website_yes


How can I do that?

Answer
# to keep letters & numbers
$s = preg_replace('/[^a-z0-9]+/i', '_', $s); # or...
$s = preg_replace('/[^a-z\d]+/i', '_', $s);

# to keep letters only
$s = preg_replace('/[^a-z]+/i', '_', $s); 

# to keep letters, numbers & underscore
$s = preg_replace('/[^\w]+/', '_', $s);

# same as third example; suggested by @tchrist; ^\w = \W
$s = preg_replace('/\W+/', '_', $s);

for string

$s = "Hello, is StackOverflow a helpful website!? Yes!";

result (for all examples) is

Hello_is_StackOverflow_a_helpful_website_Yes_

Enjoy!

Comments