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

maz*_*aze 3 php regex

我无法弄清楚如何更改我的正则表达式以保持斜杠.我想确保它只包含字母,数字,下划线,短划线和斜线.

($ query就像eg/offer/some-offer-bla-bla-bla)

$query = preg_replace('/[^-a-zA-Z0-9_]/', '', $query);
Run Code Online (Sandbox Code Playgroud)

谢谢

cod*_*ict 6

只需/在字符类中包含.但是因为你正在使用/正则表达式分隔符,所以你需要逃避它以及\/:

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

您可以通过使用\w代替来缩短正则表达式[a-zA-Z0-9_],也可以/通过使用不同的分隔符避免转义~:

$query = preg_replace('~[^-\w/]~', '', $query);
Run Code Online (Sandbox Code Playgroud)