如何使用PHP从字符串中删除子字符串?

15

给定以下字符串

http://thedude.com/05/simons-cat-and-frog-100x100.jpg

我想使用 substrtrim(或者您认为更合适的其他函数)来返回此内容。

http://thedude.com/05/simons-cat-and-frog.jpg

换句话说,需要删除-100x100。我需要的所有图像都会在文件名末尾标记此内容,在扩展名之前。

在SO上似乎有关于Ruby和Python的回答,但没有针对PHP/我的需求。

如何删除字符串左侧的部分?

从字符串开头删除n个字符

从字符串中删除子字符串

有什么建议吗?


3
你是否打算硬编码子字符串的值?还是想匹配任何-WIDTHxHEIGHT.ext这种格式的子字符串? - Mihai Stancu
你介意分享一下你找到的 Ruby 和 Python 的版本链接吗?那里使用的技术可能是相关的。 - Ry-
@minitech - 在原帖里添加了几个链接。 - pepe
4个回答

27

如果你想匹配任何宽度/高度值:

  $path = "http://thedude.com/05/simons-cat-and-frog-100x100.jpg";

  // http://thedude.com/05/simons-cat-and-frog.jpg
  echo preg_replace( "/-\d+x\d+/", "", $path );

演示:http://codepad.org/cnKum1kd

所使用的模式很基础:

/     表示模式的开始
-     字面上的 - 字符
\d+   一个数字,出现 1 次或更多次
x     字面上的 x 字符
\d+   一个数字,出现 1 次或更多次
/     表示模式的结束

说到底,这可能是一种多用途的解决方案,以防这些缩略图大小发生变化。 - pepe

23
$url = "http://thedude.com/05/simons-cat-and-frog-100x100.jpg";
$new_url = str_replace("-100x100","",$url);

10
$url = str_replace("-100x100.jpg", '.jpg', $url);

使用-100x100.jpg作为一种万无一失的解决方案。


但他需要保留扩展名,因此将“.jpg”添加为替换值。 - Mihai Stancu

3
如果你只想从所有字符串中删除-100x100这些字符,为什么不使用str_replace呢?
$url = "http://thedude.com/05/simons-cat-and-frog-100x100.jpg";
str_replace("-100x100", "", $url);

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