PHP删除特定字符串前的所有字符

99

我需要从任何字符串中删除此字符串之前的所有字符:

"www/audio"

不确定该怎么做。


你可能会发现s($str)->afterFirst('www/audio')或者s($str)->afterLast('www/audio')很有用,这些函数可以在这个独立库中找到。 - caw
4个回答

198

您可以使用strstr来实现此操作。

echo strstr($str, 'www/audio');

40
快速提醒:您可以使用 strstr() 函数来返回字符串中在其参数之前的部分,只需调用 echo strstr($str, 'www/audio', true); - cfx

23

考虑到

$string="We have www/audio path where the audio files are stored";  //Considering the string like this

你可以使用以下两种方式之一:

strstr($string, 'www/audio');
或者
$expStr=explode("www/audio",$string);
$resultString="www/audio".$expStr[1];

字符串函数通常比数组函数更快。 - Anyone
4
"explode"实际上是更好的答案,因为问题是关于删除字符串之前的文本。 - Borjovsky
1
如果您要删除多个相同字符串,explode可能会导致问题-例如,“我们有www/audio路径,其中存储了www/audio文件”,将导致“path where the”。 如果要使用explode,可以执行以下操作:foreach($ expStr as $ key => $ value) echo($ key == 0?'':'www/audio'.$ value);或foreach($ expStr as $ key => $ value) echo($ key == 0?'':($ key == 1?'':'www/audio')。$ value);如果您想省略最初的www/audio。 - TheKLF99

2

我使用这些函数。

function strright($str, $separator) {
    if (intval($separator)) {
        return substr($str, -$separator);
    } elseif ($separator === 0) {
        return $str;
    } else {
        $strpos = strpos($str, $separator);

        if ($strpos === false) {
            return $str;
        } else {
            return substr($str, -$strpos + 1);
        }
    }
}

function strleft($str, $separator) {
    if (intval($separator)) {
        return substr($str, 0, $separator);
    } elseif ($separator === 0) {
        return $str;
    } else {
        $strpos = strpos($str, $separator);

        if ($strpos === false) {
            return $str;
        } else {
            return substr($str, 0, $strpos);
        }
    }
}

这对于同一字符串的多次出现非常有效。谢谢! - davykiash
对于正确的删除-从子字符串中获取第一个分隔符出现后的完整字符串。 - Aditya

0

你可以使用 substringstrpos 来实现这个目标。

你也可以使用 正则表达式 来匹配你想要的内容。哪种方法更合适,取决于你的具体情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接