Php Preg_替换为正则表达式和正斜杠

Php Preg_替换为正则表达式和正斜杠,php,regex,preg-replace,Php,Regex,Preg Replace,代码如下: $string = "/My-Item-Here-p/sb-p36abbg.htm"; $str = preg_replace('/^.*-p\s*/', '', $string); $str = substr($str, 1); echo $str; 这会弹出6abbg.htm,我希望它只删除前面的所有内容,包括“-p/”(带正斜杠的注释) 因此,我想让它吐出sb-p36abg.htm试试这个正则表达式:/^.*-p\/(*)$/ 我认为您没有理由在这种特定情况下使用正则表达

代码如下:

$string = "/My-Item-Here-p/sb-p36abbg.htm";
$str = preg_replace('/^.*-p\s*/', '', $string);
$str = substr($str, 1);
echo $str;
这会弹出
6abbg.htm
,我希望它只删除前面的所有内容,包括“-p/”(带正斜杠的注释)


因此,我想让它吐出
sb-p36abg.htm

试试这个正则表达式:
/^.*-p\/(*)$/



我认为您没有理由在这种特定情况下使用正则表达式。只要使用和使用


考虑到在不需要正则表达式的地方使用正则表达式是对计算资源的浪费。

preg\u必须替换吗?或者你有其他选择吗?然后添加它。如果不想保留分隔符,则可以进行转义如果源字符串中有两个或多个
-p/
实例,该怎么办?要保留最小的子字符串还是较大的子字符串?始终只有一个
-p/
$string = "/My-Item-Here-p/sb-p36abbg.htm";
$str = preg_replace('/^.*?(?=-p\/)', '', $string);
$string = "/My-Item-Here-p/sb-p36abbg.htm";
$str = substr($string, strpos($string, '-p/') + 3);
echo $str;
$string = "/My-Item-Here-p/sb-p36abbg.htm";
$str = preg_replace('/^.*?(?=-p\/)', '', $string);