|
|
|
| Всем привет
Задачка решена, а насколько оптимально и правильно, есть ли еще варианты без регулярок?
// ЗАДАНИЕ ИЗ УЧЕБНИКА
// Задача 4.6
/*Преобразуйте скрипт в листинге 4.31 таким образом, чтобы значения
параметров id_forum, idjrheme и id_post в строке запроса попадали в
переменные $ forum, $theme и $post, соответственно.
Листинг 4.31. Извлечение подстрок из строки запроса
$str = "http://www.softtime.ru/forum/
read.php?id_forum=l&id_theme=961&id_post=6806";
$tok = strtok($str,"?&");
while($tok = strtok("?S"))
{
echo "$tok<br>";
Результат:
id_forum=l id_theme=961 id_post=6806
*/
// МОЕ РЕШЕНИЕ
$str = "http://www.softtime.ru/forum/
read.php?id_forum=l&id_theme=961&id_post=6806";
echo "Исходная строка: \"{$str}\"<br><br>";
// Устанавливаем позицию указателя на знак "?"
$tok = strtok($str, "?&");
while ($tok = strtok("?&"))
{
// Позиция знака "_"
$pLPos = strpos($tok, "_");
// Позиция знака "="
$pRPos = strpos($tok, "=", $pLPos);
// Вырезаем имя переменной из строки запроса
$name = substr($tok, $pLPos+1, $pRPos-$pLPos-1);
// Сохраняем значение переменной из строки запроса
$val = substr($tok, $pRPos+1);
switch ($name)
{
case "forum": $forum = $val; break;
case "theme": $theme = $val; break;
case "post": $post = $val; break;
}
}
echo "<br>Результат: forum = {$forum}, theme = {$theme}, post = {$post}";
|
| |
|
|
|
|
|
|
|
для: ДобрыйУхх
(25.01.2010 в 19:40)
| | Конечно можно, и прежде чем бросаться на регулярки, можно заглянуть в мануал:
<?
$str = parse_url('http://www.softtime.ru/forum/read.php?id_forum=l&id_theme=961&id_post=6806');
parse_str($str['query'], $arr);
print_r($arr);
?>
|
PS. Кстати, у вас "руглярками" даже и не пахнет. | |
|
|
|
|
|
|
|
для: ДобрыйУхх
(25.01.2010 в 19:40)
| | Задача не решена.
Значения параметров (да и имена тоже) следует декодировать.
rawurldecode
и таки да. parse_url() | |
|
|
|
|
|
|
|
для: ДобрыйУхх
(25.01.2010 в 19:40)
| | Спасибо
А не подскажите где вообще можно посмотреть исходный код функций php? и в частности реализацию parse_url() | |
|
|
|
|
|
|
|
для: ДобрыйУхх
(25.01.2010 в 21:01)
| | http://www.php.net/downloads.php | |
|
|
|