Как уменьшить эти 5 строк preg_replaces в 1 строке?

#php #optimization #preg-replace

#php #оптимизация #preg-replace

Вопрос:

Я считаю, что минимальный лучше, поэтому мне интересно, как я могу уменьшить / оптимизировать эти 5 строк в 1 строке?

 #JPG
$post[message] = preg_replace('/<a href="(. ?).jpg" target="_blank">(. ?)</a>/', '<img src="$1.jpg">', $post[message]);

#JPEG
$post[message] = preg_replace('/<a href="(. ?).jpeg" target="_blank">(. ?)</a>/', '<img src="$1.jpeg">', $post[message]);

#GIF
$post[message] = preg_replace('/<a href="(. ?).gif" target="_blank">(. ?)</a>/', '<img src="$1.gif">', $post[message]);

#PNG
$post[message] = preg_replace('/<a href="(. ?).png" target="_blank">(. ?)</a>/', '<img src="$1.png">', $post[message]);

#BMP
$post[message] = preg_replace('/<a href="(. ?).bmp" target="_blank">(. ?)</a>/', '<img src="$1.bmp">', $post[message]);
  

Комментарии:

1. что вы хотите от этого?

Ответ №1:

Используйте чередование:

 $post[message] = preg_replace('/<a href="(. ?.(?:jpe?g|gif|png|bmp))" target="_blank">. ?</a>/',
                              '<img src="$1">', $post[message]);
  

Обратите внимание, что я удалил вторую группу захвата, которая была текстом привязки, поскольку ваша замена регулярных выражений даже не использовала ее.

Комментарии:

1. Большое спасибо, Тим, за вашу помощь и замечание. Ваш код работает правильно, и это именно то, что я искал 🙂