PHP заменяет все происшествия определенного шаблона строки в тексте в формате HTML

У меня есть текст ввода, который может быть длинным текстом HTML с тегами и т. Д. Пример ввода может быть примерно таким:

<p>Lorem ipsum dolor sit amet, <strong>consectetur</strong> adipiscing elit.<p> <p>%image1%</p> <h2>Lorem ipsum</h2> <p>Cum sociis natoque penatibus et magnis dis parturient montes.</p> <p>%image2%</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> <p>%image3%</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. </p> ... 

Каким будет самый простой способ найти все вхождения текста между символами %% и заменить его на <img src="image1.jpg"> ?

 preg_replace('|%(.+)%|', '<img src="$1">', $text ); 

рабочий пример: http://codepad.org/20Oz3Vok

попробуйте использовать preg_replace ('/%(.+?)%/', '<img src="image1.jpg">', $string); я мог бы немного отойти от шаблона регулярного выражения, так как вам нужно избегать%, а если? это жадный символ.

Попробуй это:

 preg_replace('|%(\w+)%|', '<img src="$1">', $string); 

Он будет содержать только буквенно-цифровые символы, а также символы подчеркивания (чтобы предотвратить проблему @AlexanderVarwijk, указанную в комментариях).