/** * Убирает вложенные head-ы */ private function DeleteInnerHtml($html) { preg_match('~<head(.*?)>~is', $html, $m); if (!isset($m[0])) { return $html; } $headAttrs = isset($m[1]) ? $m[1] : ''; // Атрибуты главного head-а если были $html = $m[0] === '<head>' ? $html : str_ireplace($m[0], '<head>', $html); // Заменяем первый head с атрибутами на обычный что бы проще было искать do { $open = stripos($html, '<head>') + strlen('<head>'); $end = stripos($html, '</head>', $open); // Ищем где он закрывается $head = substr($html, $open, $end - $open + strlen('</head>')); // Берём этот подконтент // Есть ли в этом контенте подхеад? $open2 = strripos($head, '<head>'); $end2 = $open2 + strlen('<head>'); if ($open2 !== false) { $headWithoutSub = substr($head, 0, $open2) . substr($head, $end2, strlen($head) - $end2 - strlen('</head>')); $html = str_ireplace($head, $headWithoutSub, $html); } } while ($open2 !== false); // Если в контенте все еще есть открывающийся head return _StrReplaceFirst('<head>', "<head{$headAttrs}>", $html); }
/** * Путь до корня сайта с подставкой языка, нужна для ссылок */ function SiteRoot($uri = '') { global $g_config; $uri = $uri == $g_config['defaultComponent'] ? '' : $uri; $dir = SITE_IN_DIR ? SITE_IN_DIR . '/' : ''; $lang = LANG == DEF_LANG ? '' : LANG . '/'; $ret = $lang || $uri ? "/{$dir}?q={$lang}{$uri}" : "/{$dir}"; $ret = empty($ret) ? '/' : $ret; $ret = $g_config['useModRewrite'] ? _StrReplaceFirst('/?q=', '/', _StrReplaceFirst('&', '?', $ret)) : $ret; $ret = SITE_ROOT . substr($ret, 1); // Заменяем начальную страницу в URL а просто корень $ret = in_array($ret, array(SITE_ROOT . $g_config['defaultComponent'], SITE_ROOT . '?q=' . $g_config['defaultComponent'])) ? SITE_ROOT : $ret; return $ret; }