如何使用正则表达式防止斜杠被剥离?

3
我不知道如何修改下面的正则表达式以保留斜杠。 我想确保它只包含字母,数字,下划线,破折号和斜杠。
($query类似于例如/offer/some-offer-bla-bla-bla)
$query = preg_replace('/[^-a-zA-Z0-9_]/', '', $query);

谢谢

2个回答

6

只需在字符类中包含/即可。但是,由于您正在使用/作为正则表达式定界符,因此您需要将其转义为\/

$query = preg_replace('/[^-a-zA-Z0-9_\/]/', '', $query);
                                     ^^

您可以使用\w代替[a-zA-Z0-9_]来缩短正则表达式的长度,另外,您可以避免转义/,例如使用不同的分隔符,比如~

$query = preg_replace('~[^-\w/]~', '', $query);

0
一种方法是转义/字符,但这可能会使正则表达式变得有些丑陋。
您可以像这样使用不同的分隔符:(以下仅用于展示使用不同分隔符的方法)
$query = "hello/world/0123";
echo $query;
$query = preg_replace('{/}', '', $query);
echo $query;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接