PHP strip punctuation

后端 未结 4 1167
灰色年华
灰色年华 2020-12-05 00:12

Let\'s say I have this:

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

and I want to strip punctuation so it outputs as:

4条回答
  •  南方客
    南方客 (楼主)
    2020-12-05 00:44

    # 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!

提交回复
热议问题