У меня есть функция php, которая работает для того, что мне нужно, но теперь я обнаружил, что есть шанс, что она потерпит неудачу Я использую mod rewrite, чтобы переписать URL-адреса, и эта функция должна быть переписана, чтобы она работала. Если у меня есть 2 страницы, которые были переписаны как одинаковые, даже если они не совпадают, это может привести к сбою.
Функция считывает URL-адрес и разбивает его на части, используя / в качестве разделителя.
Что я хочу сделать, это проверить, есть ли в URL слово «форум» и выполняет ли он запрос к базе данных, используя следующие части URL в запросе.
Скажем, у меня есть URL-адрес типа http://www.mydomain.com/forum/1/2/6 Я хотел бы получить 1 и 2 для моего запроса, который будет Boardid и topicid. Последний бит будет номером страницы.
Это переписанный URL, который обычно выглядит как http://www.mydomain.com/topic.php?boardid=1&topicid=2&pagenum=6, но с помощью функции я не смогу разделить, потому что нет /.
Запрос, который я могу сделать достаточно просто, он просто проверяет URL, чтобы убедиться, что там находится «форум», а затем выполняет запрос. Если это не в URL, то продолжайте как обычно.
вот код для моего php breadcrumb
function breadcrumb(
$home = 'Home', // Name of root link
$division = ' / ', // Divider between links
$hidextra = true, // Toggle hide/show get data and fragment in text
$index = false, // Toggle show/hide link to directory if it does not contain a file
$indexname = 'index.php' // The definition of the file the directory must contain
) {
$breadcrumb="";
// Requested addons...
$extension = '.php'; // Extension to cut off the end of the TEXT links
$ifIndex = 'index.php'; // Filename of index/default/home files to not display
// End requested addons
$whole = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
if(stristr($whole,"contact-bidder")) {
$whole = substr($whole,0,strrpos($whole,'/'));
}
$parts = explode('/', $whole);
$parts[0] = 'http://'.$parts[0];
$array = array('-', '%20');
$breadcrumb .= "<a href=\"{$parts[0]}\">{$home}</a>{$division}";
$k = 1;
for ($i=1;$i < sizeof($parts);$i++) {
$uri = '/';
while ($k <= $i) {
$uri .= $parts[$k];
if ($k != (sizeof($parts)-1)) $uri .= '/';
$k++;
}
if (($index && is_dir($_SERVER['DOCUMENT_ROOT'].$uri) && is_file($_SERVER['DOCUMENT_ROOT'].$uri.$indexname)
|| !$index
|| !is_dir($_SERVER['DOCUMENT_ROOT'].$uri)) && $parts[$i] != $ifIndex) {
$breadcrumb .= "<a href=\"$uri\">";
if ($hidextra) {
$breadcrumb .= rtrim(preg_replace("/\?.*$/", '', ucwords(str_replace($array," ",$parts[$i]))), $extension);
}
else {
$breadcrumb .= rtrim(ucwords($parts[$i]), $extension);
}
$breadcrumb .= '</a>';
}
else {
$breadcrumb .= ucwords(str_replace($array," ",$parts[$i]));
}
if (isset($parts[($i+1)])) {
$breadcrumb .= $division;
}
$k = 1;
}
return $breadcrumb;
}
Если это невозможно или просто, есть ли способ разделить на? и & и получить только то, что перед? и после = для каждой переменной в URL