//Example of image
$image = '<img src="../img/image.jpeg" title="Title" alt="Alt"/>';
我有所有这些$patterns,我可以一次获取一个值
// get the src for that image
$pattern_src = '/src="([^"]*)"/';
// get the title for that image
$pattern_title = '/title="([^"]*)"/';
// get the alt for that image
$pattern_alt = '/alt="([^"]*)"/';
我如何将所有这些$patterns与这样的preg_replace一起使用:
preg_replace($pattern_src+$pattern_title+$pattern_alt,$1$2$3,$image);
值
$1 => src value
$2 => title value
$3 => alt value;
为什么我需要它
<figure>
<figcaption>
$2 //Title value
</figcaption>
<img src="../web/img/$1"> //New src
<figcaption>
$3 //Alt value
</figcaption>
</figure>
关于
不使用正则表达式来解析 HTML 并使用 DOMDocument 或其他东西的强制性评论,等等等等。无论如何。。。
这里有两个选项。
首先,如果属性始终按相同的顺序排列,则可以简单地使用.*
分隔当前规则:
'/.*src="([^"]*)".*title="([^"]*)".*alt="([^"]*)"/'
第二种选择,如果它们并不总是以相同的顺序,您可以使用积极的前瞻:
'/(?=.*src="([^"]*)")(?=.*title="([^"]*)")(?=.*alt="([^"]*)")/'
这将分别返回src
、title
和alt
作为$1
、$2
和$3
,无论它们在图像标签中出现的顺序如何。在这里演示