Php preg_replace正在取代一切
我想用空字符串替换某些html标记,并且只想检索文本。下面是我想要的例子Php preg_replace正在取代一切,php,regex,html-parsing,preg-replace,Php,Regex,Html Parsing,Preg Replace,我想用空字符串替换某些html标记,并且只想检索文本。下面是我想要的例子 preg_match_all("/<span id=\"priceblock_ourprice\" class=\"a-size-medium a-color-price\">(.*)<\/span>/U", $content, $matches); 尝试在正则表达式中添加问号 foreach($matches[0] as $key=>$val) { $price = preg_repl
preg_match_all("/<span id=\"priceblock_ourprice\" class=\"a-size-medium a-color-price\">(.*)<\/span>/U", $content, $matches);
尝试在正则表达式中添加问号
foreach($matches[0] as $key=>$val) {
$price = preg_replace( '/<(.*?)>/', '', $val);
}
foreach($0]匹配为$key=>$val){
$price=preg_replace('/','$val);
}
这将产生查找第一个
而不是最后一个的效果。正则表达式是贪婪的,它能找到一切
另外,请记住,这样做将用每个循环替换$price。我假设在下一个循环发生之前,您正在使用$price执行某些操作,但如果没有,则应将价格存储在数组中。尝试在正则表达式中添加问号
foreach($matches[0] as $key=>$val) {
$price = preg_replace( '/<(.*?)>/', '', $val);
}
foreach($0]匹配为$key=>$val){
$price=preg_replace('/','$val);
}
这将产生查找第一个
而不是最后一个的效果。正则表达式是贪婪的,它能找到一切
另外,请记住,这样做将用每个循环替换$price。我假设在下一个循环发生之前,您正在使用$price执行某些操作,但是如果没有,您应该将价格存储在一个数组中。如果它似乎比预期匹配得多,请使用
?
进行非贪婪匹配。贪婪(*
)会消耗尽可能多的能量,而非贪婪(*?
)会防止这种情况发生
preg_replace('/<(.*?)>/', '', $val);
输出
50
40
如果它似乎比预期匹配更多,则使用
?
进行非贪婪匹配。贪婪(*
)会消耗尽可能多的能量,而非贪婪(*?
)会防止这种情况发生
preg_replace('/<(.*?)>/', '', $val);
输出
50
40
50
40