0

这是代码:

$string = "/My-Item-Here-p/sb-p36abbg.htm";
$str = preg_replace('/^.*-p\s*/', '', $string);
$str = substr($str, 1);
echo $str;

这吐出来6abbg.htm,我想让它只删除之前的所有内容,包括“-p/”(注意带有正斜杠)。

所以我希望它吐出来sb-p36abbg.htm

4

3 回答 3

1

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

<?php
$sourcestring="/My-Item-Here-p/sb-p36abbg.htm";
echo preg_replace('/^.*-p\/(.*)$/','\1',$sourcestring);
?>

键盘链接。

于 2012-11-06T16:09:47.777 回答
0
$string = "/My-Item-Here-p/sb-p36abbg.htm";
$str = preg_replace('/^.*?(?=-p\/)', '', $string);
于 2012-11-06T16:20:02.313 回答
0

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

$string = "/My-Item-Here-p/sb-p36abbg.htm";
$str = substr($string, strpos($string, '-p/') + 3);
echo $str;

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

于 2012-11-06T16:12:19.720 回答