我有一个字符串:
<price>£10</price>Rimmel Super-Quick Mascara
我想从<price>
标签中提取字符串,并在标签后也保留字符串。所以:
$price = £10
$desc = Rimmel Super-Quick Mascara
如何使用PHP执行此操作?我试图使用我发现的以下功能,但我在正则表达式中出现未知错误,但我无法确定其中的位置。
function getTextBetweenTags($string, $tagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$tagname>/";
preg_match($pattern, $string, $matches);
return $matches[1];
}
答案 0 :(得分:1)
尝试使用价格和文字:
$str = '<price>£10</price>Rimmel Super-Quick Mascara';
$text = preg_replace('/<[a-z]+>(.*?)<\/?[a-z]+>(.*?)/','$1|$2',$str);
$data = explode('|',$text);
var_dump($data);
响应:
array (size=2)
0 => string '£10' (length=3)
1 => string 'Rimmel Super-Quick Mascara' (length=26)
在你的功能中:
function getTextBetweenTags($string, $tagname) {
$text = preg_replace("/<".$tagname.">(.*?)<\/?".$tagname.">(.*?)/","$1|$2",$string);
$data = explode('|',$text);
return $data;
}
答案 1 :(得分:0)
试试这个
$pattern = "/.*?<$tagname.*?>(.*?)<\/$tagname.*?>/";
preg_match_all($pattern, $string, $matches );
return $matches[ 0 ][ 0 ];