Php “制作字符串”;URL安全“;

Php “制作字符串”;URL安全“;,php,string,Php,String,可能重复: 有没有办法使字符串“URL安全”,即用连字符替换空格,删除任何标点符号,并将所有大写字母改为小写 例如: "This is a STRING" -› "this-is-a-string" 或 我经常使用这个函数来生成干净的URL,看起来效果不错, 你可以根据你的需要改变它,但试一下 function sanitize($string, $force_lowercase = true, $anal = false) { $strip = array("~", "`", "!

可能重复:

有没有办法使字符串“URL安全”,即用连字符替换空格,删除任何标点符号,并将所有大写字母改为小写

例如:

"This is a STRING" -› "this-is-a-string"


我经常使用这个函数来生成干净的URL,看起来效果不错, 你可以根据你的需要改变它,但试一下

function sanitize($string, $force_lowercase = true, $anal = false) {
    $strip = array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]",
                   "}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—",
                   "—", "–", ",", "<", ".", ">", "/", "?");
    $clean = trim(str_replace($strip, "", strip_tags($string)));
    $clean = preg_replace('/\s+/', "-", $clean);
    $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean ;
    return ($force_lowercase) ?
        (function_exists('mb_strtolower')) ?
            mb_strtolower($clean, 'UTF-8') :
            strtolower($clean) :
        $clean;
}
函数清理($string,$force\u lowercase=true,$anal=false){
$strip=array(“~”、“`、“!”、“@”、“#”、“$”、“%”、“^”、“&”、“*”、“(”、“”)、“"”、“=”、“+”、“[”、“{”、“]”,
"}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—",
"—", "–", ",", "", "/", "?");
$clean=trim(str_replace($strip,“,strip_标签($string));
$clean=preg_replace('/\s+/',“-”,$clean);
$clean=($anal)?preg_替换(“/[^a-zA-Z0-9]/”,“,$clean):$clean;
返回($force_小写)?
(函数_存在('mb_strtolower'))?
mb_strtolower($clean,'UTF-8'):
strtolower($clean):
$clean;
}

您可以使用
preg\u replace
替换更改这些字符

$safe = preg_replace('/^-+|-+$/', '', strtolower(preg_replace('/[^a-zA-Z0-9]+/', '-', $string)));

当然-用哪种语言?最简单的方法是什么?(我更喜欢PHP而不是JavaScript。)是的,当然有。这个问题的答案隐藏在wordpress的源代码中。寻找一个ajax调用,它根据标题为你的文章创建slug。当字符串以特殊字符结尾时,有没有一种简单的方法可以去掉最后一个连字符?@user1706680是的。我编辑了答案以去掉heading和trai连字符。
$safe = preg_replace('/^-+|-+$/', '', strtolower(preg_replace('/[^a-zA-Z0-9]+/', '-', $string)));