function setIdname($idname, $item, $withPrefix = TRUE) { global $ctrl_idnames; if ($idname == 'loc') { return localValido($item, TRUE); } //elseif ($idname=='k') COD_CHAVE (field 0)! if (!array_key_exists($idname, $ctrl_idnames)) { $ctrl_idnames[$idname] = array(1, array()); } // contador e lista de ocorrências if (isset($ctrl_idnames[$idname][1][$item])) { $id = $ctrl_idnames[$idname][1][$item]; } else { $id = $ctrl_idnames[$idname][1][$item] = $ctrl_idnames[$idname][0]; $ctrl_idnames[$idname][0]++; } return $withPrefix ? "{$idname}{$id}" : $id; }
foreach ($xp->query("//section | //td") as $node) { if (preg_match("/{$anyID_REGEX}/s", $node->textContent, $m)) { $sec0 = $m[1]; $id0 = sprintf("{$sec0}%04d", $m[2]); $line = $node->getLineNo(); $tipo = $node->nodeName; $hasLocationClass = $xp->evaluate("boolean(.//a[@class='location1'])", $node); $hasRangeClass = $node->getAttribute('class') == 'range-resumos'; if (!$hasRangeClass) { $hasRangeClass = $xp->evaluate("boolean(.//*[@class='range-resumos'])", $node); } $dump = preg_replace('/\\n\\s+/', "\n\t", $node->textContent); list($dump, $hasRange) = IDnormalize($dump, TRUE); if ($hasLocationClass) { //print " (debug ".$xp->query(".//a[@class='location1']",$node)->item(0)->nodeValue.") "; $lastLocID = localValido($xp->query(".//a[@class='location1']", $node)->item(0)->nodeValue, TRUE); } $thisRanges = []; $ERRO = ''; $isGrupo = preg_match('/\\sgrupos?[\\.\\s]/i', $dump); // usa no if if ($hasRange) { preg_replace_callback("/({$stdID_REGEX}) \\- ({$stdID_REGEX})/s", function ($m) use(&$ranges, &$instrucoes_autores, &$idLoc, $lastLocID, &$ERRO, $isGrupo, &$thisRanges) { $err = ''; if (isset($instrucoes_autores["{$m['1']} grupo"])) { $i = $instrucoes_autores["{$m['1']} grupo"]; if ($isGrupo && $i['r1'] == $m[2] && ($xx = $idLoc[$i['local']]) != $lastLocID) { $err = $ERRO = "CONFERIR: deveria ser {$xx} = {$i['local']}."; } elseif ($isGrupo && $i['r1'] != $m[2]) { //r0 ok $err = $ERRO = "ERRO: certo seria {$i['r0']}-{$i['r1']}.";