2010-11-22 104 views
0

我有一个字符串:简单的PHP正则表达式问题

$uri = "start/test/go/"; 

基本上我需要知道哪些正则表达式和PHP函数,我可以使用的第一个项目正斜杠(“/”)相匹配,将其取下来自字符串。如果第一个项目没有启动,它也应该工作,并且是其他任何可能也有空间的项目。 因此,所有这些组合应该工作:

$uri = "start_my_test/test/go/"; 
$uri2 = "start my test/test/go/"; 

然后正则表达式后,它应该总是返回:

$newUri = "test/go/"; 

哦,串的另一侧可以是任何东西为好,所以基本上我希望它在第一次出现正斜杠之前删除任何东西。

干杯

回答

0
$result = preg_replace('/^[^\/]*\//' , '', $subject); 

这是说“开始在字符串的开头” ^“匹配不是正斜杠任何数量的字符” [^\/]*,则匹配单个正斜杠\/ - 和“用什么都替换整个匹配的东西”''

+0

由于这是一个正则表达式的问题,你的答案是正确的和作品。但性能明智的非正则表达式的答案更可行。 – 2010-11-22 22:44:00

+0

好吧,性能差异非常小 - 我们正在谈论几个处理周期,除非您连续运行数十万次,否则没有人会注意到。所以它归结为代码清晰度,可维护性和风格选择。就代码清晰度而言,`strstr`可能是解决这个问题的更好的解决方案,但从风格上讲,我倾向于选择正则表达式,因为我个人觉得它们很熟悉并且易于阅读。 – 2010-11-22 22:46:52

4

使用strstr可以在php中查找第一个出现的字符串。

本身应该返回字符串的其余部分。

see here

0

正则表达式是太贵了,你需要什么样的操作。使用strpossubstr代替

$position = strpos($needle, $haystack); 
if ($position !== false) { 
    $result = substr($needle, $position + 1); 
}