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;
?>