无法获得功能,尝试过一切。 涉及剥离标点符号和空格

I am trying to remove the punctuation from a variable and it's not working, I have tried everything I can think of. I've very tired and I'm sure it's something I'm just not seeing. Any help would be greatly appreciated.

Code:

$memberlinksafe = $_POST["entity_name"];

function strip_punctuation($memberlinksafe) {
    $memberlinksafe = strtolower($memberlinksafe);
    $memberlinksafe = preg_replace("/[:punct:]+/", "", $memberlinksafe);
    $memberlinksafe = str_replace(" +", "", $memberlinksafe);
    return $memberlinksafe;
} 

What am I not seeing? It's just returning the original $_POST variable

Why

$memberlinksafe = str_replace(" +", "", $memberlinksafe);

and not

// This function removes spaces, \t (tabs),  and 
. All are spaces!
$memberlinksafe = preg_replace('~[\\s]+~', '', $memberlinksafe);

for stripping spaces?

UPDATE:

// Remove punctuation
$memberlinksafe = preg_replace('~[[:punct:]]+~', '', $memberlinksafe);
// Remove spaces
$memberlinksafe = preg_replace('~[\\s]+~', '', $memberlinksafe);
// Lowercase
$memberlinksafe = strtolower($memberlinksafe);

or do:

// Keep only alphanumerics and lowercase it
$memberlinksafe = strtolower(preg_replace('~[^[:alnum:]]+~', '', $memberlinksafe));

WHY NOT \W

Because this:

// outputs 'testing_something'
var_dump(preg_replace('~[\\W]+~', '', 'testing_something'));
// outputs 'testingsomething'
var_dump(preg_replace('~[[:punct:]]+~', '', 'testing_something'));

_ is actually punctuation.