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


Get string from between tags whilst retaining rest of 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];
}

在价格和文本方面都试试这个:

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

试试这个

$pattern = "/.*?<$tagname.*?>(.*?)<'/$tagname.*?>/";
preg_match_all($pattern, $string, $matches );
return $matches[ 0 ][ 0 ];