Я хотел бы создать механизм для замены URL-ссылки в $menuitem['url']
для чего-то вроде этого — # link1, # link2, # link3. Я провел пару часов с поиском пути, но я все еще разочарован.
Например, мне нужно получить этот URL: http://chervo.ideatech.cz/Admin/#link1
вместо текущего: http://chervo.ideatech.cz/Admin/?pg=overview&Таблица = data_obrazky
private function GetHtmlRecursive($arr) {
$html = '';
foreach ($arr AS $item) {
...
...
...
else {
$html .= '<li><a href="'.$item['url'].'">'.$item['nazev'].'</a></li>';
}
}
return $html;
}
private function FillMenuItem(&$menuitem) {
...
...
...
else {
if (isset($menuitem['tab']))
$this->FillByTabdef($menuitem);
if ( (!isset($menuitem['url'])) && (isset($menuitem['tab'])) ) {
$menuitem['url'] = '?pg=overview&table='.$menuitem['tab'];
}
...
...
...
}
}
Есть ли простой способ, как это сделать?
Весь код здесь: http://codepad.org/DvwPJC1V
$urls = array('http://chervo.ideatech.cz/Admin/?pg=overview&table=data_obrazky', 'http://chervo.ideatech.cz/Admin/?pg=pickles&table=food', 'http://chervo.ideatech.cz/Admin/?pg=auto&table=cars');
foreach($urls AS $url)
{
//If http_build_url is available
//$parse = parse_url($url);
//unset($parse[PHP_URL_QUERY]);
//$parse[PHP_URL_FRAGMENT] = "link1";
//$newURL = http_build_url($parse);
//var_dump($newURL);
//otherwise do this
$query = parse_url($url, PHP_URL_QUERY);
$newURL = str_replace("?" . $query, "#link1", $url);
var_dump($newURL);
}
Попробуйте что-то вроде http://php.net/manual/en/function.parse-url.php чтобы определить части URL, которые вы хотите заменить, либо замените его простой строкой replace, либо, если доступно http://php.net/manual/en/function.http-build-url.php
В качестве альтернативы вы можете просто удалить все после ?
персонаж затем добавить #link1
Других решений пока нет …