1

这是我的代码:

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

我正在尝试/9j/$searchTerm.

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

我的表达有什么不对?

4

6 回答 6

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

/用其他东西替换分隔符(#在我的例子中)只是让它更容易阅读,特别是如果你的模式恰好包含/字符。使用另一个分隔符意味着您不需要转义斜杠。

于 2013-07-29T05:17:55.443 回答
1

我不确定你+s从哪里得到任何有意义的正则表达式。

我个人建议这样做:

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

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

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

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

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

此正则表达式使用括​​号作为分隔符(如果使用括号,则无需转义任何内容以避免冲突,因为它们成对出现),它从字符串的开头开始,查找斜杠,然后查找不是斜杠的任何内容,然后是第二个斜线,然后将其全部删除。

于 2013-07-29T05:18:33.157 回答
1

你应该改变+swith.*

此外,不需要i

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

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

于 2013-07-29T05:17:25.620 回答
0

尝试不同的分隔符:

preg_replace('~/\w+/~','',$term);
于 2013-07-29T05:17:52.700 回答
0

尝试这个:

preg_replace('#/.*/#', '', $searchTerm);
于 2013-07-29T05:18:10.070 回答
0
$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('~^/\S+/~','',$searchTerm);
于 2013-07-29T05:18:12.587 回答