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.