//Example of image
$image = '<img src="../img/image.jpeg" title="Title" alt="Alt"/>';
我拥有所有这些$模式,我可以一次获取一个值
// 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="([^"]*)"/';
我如何使用所有这个$模式与 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>
答案 0 :(得分:1)
关于不使用正则表达式来解析HTML,以及使用DOMDocument或其他东西的强制性评论,等等等等等等。反正... 的
这里有两个选择。
首先,如果属性始终采用相同的顺序,您只需将当前规则与.*
分开:
'/.*src="([^"]*)".*title="([^"]*)".*alt="([^"]*)"/'
第二个选项,如果它们并非总是以相同的顺序排列,则可以使用正向前瞻:
'/(?=.*src="([^"]*)")(?=.*title="([^"]*)")(?=.*alt="([^"]*)")/'
这将分别src
,title
和alt
返回$1
,$2
和$3
,无论它们出现在何种顺序图片标签。演示here