这是我的代码:
$searchTerm='/9j/4AAQSkZJ';
$searchTerm = preg_replace('/\/(+s)\//i','',$searchTerm);
我正在尝试从/9j/
中移除$searchTerm
。
它特别是一个斜杠,然后是一组没有空格的字符和整数,然后是斜杠
我的表情有什么不对?
答案 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);