PHP:如何用preg_match提取XYZZZ并将其存入$match[1]?
解决方案
你需要调整正则表达式的捕获组设置,把原本对应content属性值的捕获组改为非捕获组,让目标的XYZZZ成为第一个捕获组,具体修改如下:
推荐正则表达式(使用~作为分隔符,更简洁)
$pattern = '~<span class="m-product-data-3__price-value" itemprop="price" content="(?:.*?)">(.*?)</span>~si';
原格式兼容的正则表达式(保留原转义写法)
$pattern = '<span class=\"m-product-data-3__price-value\" itemprop=\"price\" content=\"(?:.*)\">(.*?)</span>si';
关键修改说明:
- 将原正则中匹配
content属性值的(.*)改为(?:.*?),(?:...)是非捕获组,不会将匹配内容存入$match数组 - 原本对应
XYZZZ的(.*?)现在成为第一个捕获组,匹配结果会存入$match[1] - 把结尾的
<改为</span>,匹配更精准,避免误匹配其他标签的起始符号
内容的提问来源于stack exchange,提问作者Marek Korbus
相关产品推荐
相关产品推荐

