正规用法帮助新手

时间:2013-07-29 05:13:14

标签: php regex

这是我的代码:

$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('/\/(+s)\//i','',$searchTerm);

我正在尝试从/9j/中移除$searchTerm

它特别是一个斜杠,然后是一组没有空格的字符和整数,然后是斜杠

我的表情有什么不对?

6 个答案:

答案 0 :(得分:4)

$newTerm = preg_replace('#/[a-z0-9]+/#i', '', $searchTerm);

使用其他内容替换/分隔符(在我的示例中为#)只会使其更易于阅读,尤其是当您的模式恰好包含/个字符时。使用另一个分隔符意味着您不需要转义斜杠。

答案 1 :(得分:1)

您应该使用+s

更改.*

此外,无需i

$newTerm = preg_replace('/\/(.*)\//', '', $searchTerm);

在这里测试:http://regexpfiddle.com/

答案 2 :(得分:1)

我不确定你在哪里获得+s和正则表达式中的任何有意义的东西。

我个人建议:

$searchTerm = explode("/",$searchTerm,3)[2];

但请注意,这仅适用于最新的PHP。对于旧版本,您需要:

$searchTerm = explode("/",$searchTerm,3);
$searchTerm = $searchTerm[2];

如果你想要一个正则表达式,试试这个:

$searchTerm = preg_replace("(^/[^/]+/)","",$searchTerm);

这个正则表达式使用括​​号作为分隔符(如果你使用括号,你永远不必逃避任何事情以避免冲突,因为它们是匹配对),它从字符串的开头开始,寻找斜线,然后是任何东西不是斜线,而是斜线,然后将其全部删除。

答案 3 :(得分:0)

尝试使用其他分隔符:

preg_replace('~/\w+/~','',$term);

答案 4 :(得分:0)

试试这个:

preg_replace('#/.*/#', '', $searchTerm);

答案 5 :(得分:0)

$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('~^/\S+/~','',$searchTerm);