Я хочу использовать регулярные выражения для замены src
html-атрибутов. HTML не деформирован и, к счастью, принимает одинаковую форму на всех страницах базы данных - т.е.
<img src="http://x.y/z/1.png" />
У меня есть код, который отлично работает, если на странице только одно изображение. Я хочу знать, как лучше заменить несколько изображений, так как это заменит все теги изображений на одну строку.
$result = $s->db_query("SELECT reviewFullText as f FROM reviews WHERE reviewsID = 155");
while($row = mysql_fetch_array($result))
{
$body = stripslashes(html_entity_decode($row['f'], ENT_NOQUOTES, "UTF-8"));
preg_match_all('/<img.*?(src\=[\'|"]{0,1}.*?[\'|"]{0,1})[\s|>]{1}/i', $body, $matches);
for($i=0;$i<count($matches[0]);$i++)
{
$number = preg_replace("/[^0-9]/", '', $matches[0][$i]);
echo preg_replace('/<img.*?(src\=[\'|"]{0,1}.*?[\'|"]{0,1})[\s|>]{1}/i', '<img src="http://x.y/a/' . $number . '.png"', $matches[0][$i]);
}
}
Таким образом, если страница содержит два файла, один с именем 1.png и другой с именем 2.png, сценарий должен проанализировать числа и заменить их другим URL-адресом, таким как http://x.y/a/1.png
и http://x.y/a/2.png
.
Я слышал, preg_replace_callback
- лучший способ сделать это, но я понятия не имею, как заставить это работать ... Помогите!