这是我的代码:
$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('/\/(+s)\//i','',$searchTerm);
我正在尝试/9j/
从$searchTerm
.
它特别是一个斜线,然后是一组没有空格的字符和整数,然后是一个斜线
我的表达有什么不对?
$newTerm = preg_replace('#/[a-z0-9]+/#i', '', $searchTerm);
/
用其他东西替换分隔符(#
在我的例子中)只是让它更容易阅读,特别是如果你的模式恰好包含/
字符。使用另一个分隔符意味着您不需要转义斜杠。
我不确定你+s
从哪里得到任何有意义的正则表达式。
我个人建议这样做:
$searchTerm = explode("/",$searchTerm,3)[2];
但请注意,这只适用于最新的 PHP。对于旧版本,您需要:
$searchTerm = explode("/",$searchTerm,3);
$searchTerm = $searchTerm[2];
如果你想要一个正则表达式,试试这个:
$searchTerm = preg_replace("(^/[^/]+/)","",$searchTerm);
此正则表达式使用括号作为分隔符(如果使用括号,则无需转义任何内容以避免冲突,因为它们成对出现),它从字符串的开头开始,查找斜杠,然后查找不是斜杠的任何内容,然后是第二个斜线,然后将其全部删除。
你应该改变+s
with.*
此外,不需要i
$newTerm = preg_replace('/\/(.*)\//', '', $searchTerm);
尝试不同的分隔符:
preg_replace('~/\w+/~','',$term);
尝试这个:
preg_replace('#/.*/#', '', $searchTerm);
$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('~^/\S+/~','',$searchTerm);