У меня есть текст ввода, который может быть длинным текстом 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, указанную в комментариях).