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