Php Preg_替换多个模式

Php Preg_替换多个模式,php,preg-replace,Php,Preg Replace,我正忙于一个网站,对于一个元素,我使用preg_replace用破折号替换所有空格 preg_replace('/\\s/', '-', $item_replace_en[0]) 这很有效,但现在我有一个新问题。用户输入以下“音乐/电影”。 输出是“音乐/电影”,我希望它是“音乐电影” 如何实现这一点?您可以在模式和替换文本中使用数组。 比如说 $pattern=array(); $pattern[0]="/\\s/"; $pattern[1]="/-\/-/"; $replace=array

我正忙于一个网站,对于一个元素,我使用preg_replace用破折号替换所有空格

preg_replace('/\\s/', '-', $item_replace_en[0])
这很有效,但现在我有一个新问题。用户输入以下“音乐/电影”。 输出是“音乐/电影”,我希望它是“音乐电影”


如何实现这一点?

您可以在模式和替换文本中使用数组。 比如说

$pattern=array();
$pattern[0]="/\\s/";
$pattern[1]="/-\/-/";
$replace=array();
$replace[0]="-";
$replace[1]="-";
preg_replace($pattern, $replace, $item_replace_en[0]);
您可以使用任意数量的图案和替换品。
有关更多信息,请参阅。您可以在图案和替换文本中使用数组。 比如说

$pattern=array();
$pattern[0]="/\\s/";
$pattern[1]="/-\/-/";
$replace=array();
$replace[0]="-";
$replace[1]="-";
preg_replace($pattern, $replace, $item_replace_en[0]);
您可以使用任意数量的图案和替换品。 有关更多信息,请参阅尝试以下操作:

$returnValue = preg_replace('/(\\s\\/)?(\\s)/', '-',$item_replace_en[0]);
但这并不能取代像
“Music/Film”或
“Music/Film”或
Music/Film
这样的字符串。试试这个:

$returnValue = preg_replace('/(\\s\\/)?(\\s)/', '-',$item_replace_en[0]);

但这不会取代像
“Music/Film”
“Music/Film”
Music/Film
这样的字符串。看起来您正在尝试生成一个可以用作URL的字符串

当用户添加要转换为URL安全字符串的标题时,可能会出现许多情况。例如,有人可以使用:

Mess'd up --text-- just (to) stress /test/ ?our! `little` \\clean\\
url fun.ction!?-->"); 
应返回:

混乱的文本只是为了测试我们的小的干净的url函数

你的代码准备好了吗?在这种情况下,您可以使用此功能:

setlocale(LC_ALL, 'en_US.UTF8');
function toAscii($str, $replace=array(), $delimiter='-') {
    if( !empty($replace) ) {
        $str = str_replace((array)$replace, ' ', $str);
    }

    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
    $clean = strtolower(trim($clean, '-'));
    $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);

    return $clean;
}

看起来您正在尝试生成一个可以用作URL的字符串

当用户添加要转换为URL安全字符串的标题时,可能会出现许多情况。例如,有人可以使用:

Mess'd up --text-- just (to) stress /test/ ?our! `little` \\clean\\
url fun.ction!?-->"); 
应返回:

混乱的文本只是为了测试我们的小的干净的url函数

你的代码准备好了吗?在这种情况下,您可以使用此功能:

setlocale(LC_ALL, 'en_US.UTF8');
function toAscii($str, $replace=array(), $delimiter='-') {
    if( !empty($replace) ) {
        $str = str_replace((array)$replace, ' ', $str);
    }

    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
    $clean = strtolower(trim($clean, '-'));
    $clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);

    return $clean;
}

当用户输入“音乐、电影”时,您会再次询问吗?如果没有,请花时间更准确地指定您想要的内容。当用户输入“音乐、电影”时,您是否要再次询问?如果没有,请花时间更准确地指定所需内容。