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

时间:2010-11-03 12:18:11

标签: php regex

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

($ query就像是例如/ offer / some-offer-bla-bla-bla)

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

由于

2 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:0)

一种方法是逃避/字符,但这会使正则表达式变得难看。

您可以使用不同的分隔符:(以下仅显示使用不同的分隔符)

$query = "hello/world/0123";
echo $query;
$query = preg_replace('{/}', '', $query);
echo $query;