Preg_Replace Options

Я пытаюсь добавить что-то в середине текста, как это.

PrivateImg-0123456789_ [Я хочу кое-что добавить здесь.jpg

И я не знаю, какую функцию или способ я должен использовать.

Мне было интересно по поводу функции preg_replace, но я не знаю, можно ли заставить эту функцию заменить определенный текст в какой-то позиции.

3 ответа

Решение

Просто используйте str_replace()?

$string = "PrivateImg-0123456789.jpg";
echo str_replace(".jpg", "[whateveryouwant].jpg", $string);

Если вы должны использовать регулярное выражение:

$string = "PrivateImg-0123456789.jpg";
echo preg_replace("/\.(jpe?g|png|gif)$/si", "[whateveryouwant].$1", $string);

Это будет делать JPG, JPEG, PNG и GIF, пока это последняя часть. /foo/bar.gif/thisIsWeird не будет совпадать

Попробуйте это, если вы хотите вставить текст непосредственно перед расширением:

$string = 'PrivateImg-0123456789.jpg';
$pattern = '/(.+?)(\.[^\.]+)/';
$text_to_insert = '_I wanna add here something';
$replacement = '${1}' . $text_to_insert . '$2';
echo preg_replace($pattern, $replacement, $string);

Шаблон говорит:(. +?) Сопоставить и сгруппировать любой символ, кроме \n 1 или более раз

тогда (.[^.]+) совпадение и группа. персонаж '.' и любой символ, кроме: "." 1 или более раз

Как насчет этого кода без использования preg_replace. Может быть на одну / две строки кода, но определенно проще, чем решение preg_replace

<?php
$string = 'PrivateImg-0123456789.jpg';
$text_to_insert = '_I wanna add here something';
$pos = strrpos($string,".");
$string = substr($string,0,$pos) . $text_to_insert . substr($string,$pos);
print $string;
?>
Другие вопросы по тегам