Эхо-переменная из строки запроса?

Я только что создал систему 404, которая работает двумя способами: ? 404 - Будет загружен случайный мем. ? 404 = (a-u) - укажет мем.

В настоящее время я должен указать все из них в части селектора, есть ли способ получить из этого строку запроса и переменную эха?

<center>
    <br>
    <?php
        $a = '<img src = "https://img-9gag-fun.9cache.com/photo/aAxQ9Bd_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
        $b = '<img src = "https://img-9gag-fun.9cache.com/photo/aPjmGrB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
        $c = '<img src = "https://img-9gag-fun.9cache.com/photo/a2oMpY1_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
        $d = '<img src = "https://img-9gag-fun.9cache.com/photo/anM7Djq_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
        $e = '<img src = "https://img-9gag-fun.9cache.com/photo/awrmNLB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
        $f = '<img src = "https://img-9gag-fun.9cache.com/photo/aMAvmGM_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
        $g = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/avOWw3Z_460svwm.webm" type = "video/webm"></video>';
        $h = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/a0Kognd_460svwm.webm" type = "video/webm"></video>';
        $i = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/agXQ9Wq_460svwm.webm" type = "video/webm"></video>';
        $j = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQ232_460svwm.webm" type = "video/webm"></video>';
        $k = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/anMOZZo_460svwm.webm" type = "video/webm"></video>';
        $l = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aExMKDn_460svwm.webm" type = "video/webm"></video>';
        $m = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aAxQAPZ_460svwm.webm" type = "video/webm"></video>';
        $n = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aZ3n9zz_460svwm.webm" type = "video/webm"></video>';
        $o = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/agXQRo6_460svwm.webm" type = "video/webm"></video>';
        $p = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXb7Q_460svwm.webm" type = "video/webm"></video>';
        $r = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/aLjz2LV_460svwm.webm" type = "video/webm"></video>';
        $r = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/a0KXYvZ_460svwm.webm" type = "video/webm"></video>';
        $s = '<video preload = "auto" poster = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460swp.webp" loop = "loop" autoplay = "autoplay" style = "max-height: 500px; min-height: 500px; max-width: 500px;"><source src = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460svvp9.webm" type = "video/webm"><source src = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460sv.mp4" type = "video/mp4"><source src = "https://img-9gag-fun.9cache.com/photo/arg34Yd_460svwm.webm" type = "video/webm"></video>';
        $t = '<iframe height = "500" width = "890" src = "https://www.youtube.com/embed/a3nPG9JpoLg?rel=0&amp;controls=0&amp;showinfo=0&autoplay=1" frameborder = "0" allow = "autoplay encrypted-media"></iframe> ';
         if ($_GET['404'] == 'a') { echo $a; }
    else if ($_GET['404'] == 'b') { echo $b; }
    else if ($_GET['404'] == 'c') { echo $c; }
    else if ($_GET['404'] == 'd') { echo $d; }
    else if ($_GET['404'] == 'e') { echo $e; }
    else if ($_GET['404'] == 'f') { echo $f; }
    else if ($_GET['404'] == 'g') { echo $g; }
    else if ($_GET['404'] == 'h') { echo $h; }
    else if ($_GET['404'] == 'i') { echo $i; }
    else if ($_GET['404'] == 'j') { echo $j; }
    else if ($_GET['404'] == 'k') { echo $k; }
    else if ($_GET['404'] == 'k') { echo $l; }
    else if ($_GET['404'] == 'm') { echo $m; }
    else if ($_GET['404'] == 'n') { echo $n; }
    else if ($_GET['404'] == 'o') { echo $o; }
    else if ($_GET['404'] == 'p') { echo $p; }
    else if ($_GET['404'] == 'q') { echo $q; }
    else if ($_GET['404'] == 'r') { echo $r; }
    else if ($_GET['404'] == 's') { echo $s; }
    else if ($_GET['404'] == 't') { echo $t; }
    else {
        $error = range('a', 't');
        $random_error = array_rand($error);
        echo $$error[$random_error];
    }
    ?>
    <h1>You dun goofed</h1>
    <?php echo 'Error code: '. $_SERVER['QUERY_STRING']; ?>
</center>
<style>
    body { overflow-y: hidden; }
    #content { height: 1000px; }
</style>

Пожалуйста, постарайтесь, чтобы ваши вопросы оставались самодостаточными. Внешние ссылки настоятельно не рекомендуются, потому что они неудобны, могут быть заблокированы для некоторых людей и могут измениться или быть удалены позже.

tadman 01.05.2018 23:07

Я также рекомендую вам узнать об ассоциативных массивах PHP, потому что такой стиль программирования не является устойчивым. С ассоциативным массивом вы можете использовать $message[$_GET['404']] вместо использования операторов Nif.

tadman 01.05.2018 23:08

Это 58 строк переворачивания, разве вставка их туда не будет считаться спамом или чем-то подобным?

DoubleThePsycho 01.05.2018 23:09

Уловка состоит в том, чтобы размещать только строки достаточно, которые мы знаем, о чем вы говорите. Например, пост a,b...y,z, и мы можем понять, что для краткости были вырезаны и другие материалы. Не нужно все перечислять исчерпывающе. Публикация его за пределами сайта не поможет нам быстрее прочитать весь этот дублированный код.

tadman 01.05.2018 23:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
290
2

Ответы 2

Вы можете использовать переменная-переменная:

echo $$_GET['404'];

хотя с этим массивом вам, возможно, придется сделать:

echo ${$_GET['404']};

http://sandbox.onlinephpfunctions.com/code/4f51e957806e803300dd58e892532e311a19a32a

Однако лучшим решением было бы сохранить переменные в массиве:

$images = ['a' => 'something.jpg', 'b' => . 'something-else.png'];
echo $images[$_GET['404']];

Хотя это технически правильно, это лишь усугубляет проблемный дизайн этого кода.

tadman 01.05.2018 23:09

Вместо :

    $a = '<img src = "https://img-9gag-fun.9cache.com/photo/aAxQ9Bd_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
    $b = '<img src = "https://img-9gag-fun.9cache.com/photo/aPjmGrB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';
    $c = '<img src = "https://img-9gag-fun.9cache.com/photo/a2oMpY1_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">';

и т.д., вы можете использовать ассоциативный массив, например:

$memes = array(
    'a' => '<img src = "https://img-9gag-fun.9cache.com/photo/aAxQ9Bd_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">',
    'b' => '<img src = "https://img-9gag-fun.9cache.com/photo/aPjmGrB_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">',
    'c' => '<img src = "https://img-9gag-fun.9cache.com/photo/a2oMpY1_460s.jpg" style = "max-height: 500px; min-height: 500px; max-width: 500px;">',
 );

Затем вы можете использовать значение строки запроса, чтобы получить член на основе этого ключа, например:

echo $memes[$_GET['404']];

Отличный первый рефакторинг.

tadman 01.05.2018 23:11

Не могли бы вы показать мне, как я бы добавил это в свой код? У меня около 3 недель опыта работы с PHP, 40% этого кода даже не мной ...

DoubleThePsycho 01.05.2018 23:21

@DoubleThePsycho замените строки if ($_GET['404'] == 'a') { echo $a; } на if (array_key_exists('404', $_GET) && array_key_exists($GET['404'], $memes)){ echo $memes[$_GET['404']]; } else { //... error }

Will B. 01.05.2018 23:53

Я попробовал. На этот раз загрузилась остальная часть страницы, но сам мем не появился. Мой текущий код: 'u' => '' ); if (array_key_exists('404', $_GET) && array_key_exists($GET['404'], $memes)){ echo $memes[$_GET['404']]; } else {} ?> <h1>You dun goofed</h1> <?php echo $random_error; ?>

DoubleThePsycho 02.05.2018 00:34

Изменил его на 3v4l.org/ADOtJ, чтобы предметы отображались случайным образом, большое спасибо за помощь, приятель!

DoubleThePsycho 02.05.2018 04:32

Другие вопросы по теме