这是正则表达式,其中替换所有空格和点 - 但没有单引号和双引号。
$name = htmlspecialchars(trim(@$_POST["name"],' '),ENT_QUOTES);
$url = preg_replace("![^a-zA-Z0-9]+!i", "-", strtolower(htmlspecialchars(@$_POST["name"],ENT_QUOTES)));
您已使用以下行将所有单引号和双引号转换为 html 特殊字符:
$name = htmlspecialchars(trim(@$_POST["name"],' '),ENT_QUOTES);
现在它们看起来像'"'
要替换所有引号,您必须事先解码它们:
$url = preg_replace("![^a-zA-Z0-9]+!i", "-", strtolower(html_entity_decode($name,ENT_QUOTES)));