Как удалить подстроку из строки с помощью PHP?

Учитывая следующую строку

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

Я хотел бы использовать substr или trim (или что вам больше подходит), чтобы вернуть это

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

то есть удалить -100x100. Все изображения, которые мне нужны, будут иметь теги, помеченные до конца имени файла, непосредственно перед расширением.

Кажется, что ответы на это на SO re Ruby и Python, но не на PHP/, специфичные для моих потребностей.

Как удалить левую часть строки?

Удалить n символов из начала строки

Удалить подстроку из строки

Любые предложения?

Ответ 1

Если вы хотите соответствовать любым значениям ширины/высоты:

  $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

Используемый шаблон довольно простой:

/     Denotes the start of the pattern
-     Literal - character
\d+   A digit, 1 or more times
x     Literal x character
\d+   A digit, 1 or more times
/     Denotes the end of the pattern

Ответ 2

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

Ответ 3

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

Используйте -100x100.jpg для пуленепробиваемого решения.

Ответ 4

Если -100x100 - единственные символы, которые вы пытаетесь удалить из всех ваших строк, почему бы не использовать str_replace?

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