请看下面这个函数,我想要获取位于">"和"<"之间的包含形式如“原价123.5元”的字符串,如:“<div class=\"roll\">&nbsp;</div><h1>原价10.76元超值双人套餐,一流创意饮品</h1><div class=\"roll\">&nbsp;</div><div class=\"deal-state\">”,则要获取字符串:“原价10.76元超值双人套餐,一流创意饮品”。
  在该函数中“\xd4\xad\xbc\xdb”是汉字“原价”的gd2132编码,,“\xd4\xaa”是汉字“元”的gd2132编码。
        function findtags($content)
{
$exp = "/.*>([^>]*?\xd4\xad\xbc\xdb([0-9]|\.)+\xd4\xaa[^>]*?)</s";
if(preg_match($exp, $content, $res))
{;
return trim($res[1]);
}
return false;
}  我的问题是
  (1)要匹配的字符串较小(如上面的那个)时,可以匹配到,而字符串很大时,尽管存在,可能匹配不到,不知道为什么,是不是这个正则表达式存在问题?(注:编码没问题,都是gb2132)
   (2)在有些情况下,给\xd4\xad\xbc\xdb加上小括号,与不加小括号效果不一样,加上小括号匹配不到,而不加上小括号能匹配到,为什么?(注:加上小括号正则表达式为:"/.*>([^>]*?(\xd4\xad\xbc\xdb)([0-9]|\.)+\xd4\xaa[^>]*?)</s")