Php 在preg_match_all和学位符号方面遇到问题

Php 在preg_match_all和学位符号方面遇到问题,php,regex,Php,Regex,我在包含学位符号的字符串上遇到preg_match_all问题。下面是代码示例 //Sample data $x = "<array_0> <id>text-21650</id> <text>Lat/Long 38° 57' 34 N, 106° 21' 38 W</text> </array_0>"; $reels = '/<(\w+)\s*([^\/>]*)\s

我在包含学位符号的字符串上遇到preg_match_all问题。下面是代码示例

//Sample data
$x = "<array_0>
        <id>text-21650</id>
        <text>Lat/Long 38° 57' 34 N,  106° 21' 38 W</text>
      </array_0>";

$reels = '/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s';

preg_match_all($reels, $x, $elements);

foreach ($elements[1] as $ie => $xx) {
  $name = $elements[1][$ie];
  $cdend = strpos($elements[3][$ie], "<");
  if ($cdend > 0) {
    $xmlary[$name] = substr($elements[3][$ie], 0, $cdend - 1);
  }

  if (preg_match($reels, $elements[3][$ie]))
    $xmlary[$name] = processEl($elements[3][$ie]);
  else if ($elements[3][$ie] !== null) {
    $xmlary[$name] = $elements[3][$ie];
  }
}
//示例数据
$x=”
text-21650
横向/纵向38°57'34北纬106°21'38西
";
$REELLS='/]*)\s*(?:\/>|>(.*)/s';
preg_match_all($revels,$x,$elements);
foreach($elements[1]为$ie=>$xx){
$name=$elements[1][$ie];
$cdend=strpos($elements[3][$ie],“看一看

基本上,您必须切换到Unicode匹配

改为使用mb_ereg_match来支持UTF-8字符。文档:

初始化mb*如下所示:

mb_regex_编码('UTF-8');mb_内部_编码('UTF-8')

看一看

基本上,您必须切换到Unicode匹配

改为使用mb_ereg_match来支持UTF-8字符。文档:

初始化mb*如下所示:

mb_regex_编码('UTF-8');mb_内部_编码('UTF-8')


我也遇到了同样的问题,并且帮了我。基本上,要查找学位符号,您可以使用\x{00B0},即

preg_match_all(“/\x{00B0}/”,$x,$elements)


我也遇到了同样的问题,并且帮了我。基本上,要查找学位符号,您可以使用\x{00B0},即

preg_match_all(“/\x{00B0}/”,$x,$elements)


“由于某种原因,它不能正常工作“->这意味着什么?预期的行为和实际输出是什么?免费的建议…使用XML解析器,而不是正则表达式来解析XML。当我尝试时,该正则表达式的可能副本与示例字符串匹配得很好。向我们展示一些我们可以实际运行的显示问题的代码。“由于某种原因,它不能正常工作“->这意味着什么?预期的行为和实际输出是什么?免费的建议…使用XML解析器,而不是正则表达式来解析XML。当我尝试时,该正则表达式的可能副本与示例字符串匹配得很好。向我们展示一些我们可以实际运行的显示问题的代码。