function _doAnchors_reference_callback($matches) { $whole_match = $matches[1]; $res = parent::_doAnchors_reference_callback($matches); if ($res != $whole_match || strpos($matches[3], '#') === false) { return $res; } list($matches[3], $anchor) = explode('#', $matches[3], 2); $link_id = strtolower($matches[3]); $temp = false; if (isset($this->urls[$link_id])) { $temp = $this->urls[$link_id]; $explode = explode('#', $this->urls[$link_id], 2); if (count($explode) == 2) { $this->urls[$link_id] = $explode[0]; } $this->urls[$link_id] .= '#h:' . str_replace('.', '_', $link_id) . ':' . $anchor; } $res = parent::_doAnchors_reference_callback($matches); if ($temp !== false) { $this->urls[$link_id] = $temp; } return $res; }