从标签之间获取字符串,同时保留其余字符串

时间:2015-11-18 13:51:47

标签: php regex string

我有一个字符串:

<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];
}

2 个答案:

答案 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 ];