За последние 24 часа нас посетили 22673 программиста и 1258 роботов. Сейчас ищут 667 программистов ...

Как удалить часть текста из переменной?

Тема в разделе "PHP для новичков", создана пользователем Sofia, 3 фев 2019.

  1. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Доброго времени суток.
    Возникла сложность с удалением части текста с переменной.

    Вот есть переменная:
    PHP:
    1. $url = 'https://yandex.ru/search/';
    Вот надо удалить все, и оставить только, что-бы отображалось слово: search
    У меня же выводится со слешем search/... Не могу сообразить, как удалить слешь :
    PHP:
    1. $url = 'https://yandex.ru/search/';
    2.     $newUrl = explode('yandex.ru/', $url);
    3.     echo $newUrl[count($newUrl)-1];
    Подскажите пожалуйста, как удалить слешь?
     
  2. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    С этой задачей справилась...

    А можно как-то укоротить код?
    Имеется такая переменная:
    PHP:
    1. $url = 'https://yandex.ru/old/search/?text=примеры';
    Необходимо вывести только слово: примеры
    Использую вот так:
    PHP:
    1. $url = explode('/', $url);
    2. $url = explode('=', $url[3]);
    А можно в одну строку как-то?
     
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. echo explode('=', 'https://yandex.ru/old/search/?text=примеры')[1];
    @Sofia зачем в одну строку то?
     
  4. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    вот жеж блин... точно =)
    Спасибо огроменное! =)
    п.с. вот я чувствовала, что можно проще... но запуталась и пошла другим путем.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    @Sofia,
    PHP:
    1. <?php
    2.  
    3. print_r ( $c = parse_url ( 'https://yandex.ru/search/old/2?text=примеры' ) );
    4.  
    5. echo explode ( '/', trim ( $c['path'], '/' ) )[0];
    6.  
    7. parse_str ( $c['query'], $get );
    8.  
    9. echo $get['text'];
    Это на будущее с другими факторами
     
    Sofia нравится это.
  6. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Сталкнулась с усложнением задачи.
    Итак, если в адресной строке присутствует адрес: https://yandex.ru/old/search/?text=примеры, мне надо, что-бы отобразилось слово примеры, код разобрали:
    PHP:
    1. echo explode('=', 'https://yandex.ru/old/search/?text=примеры')[1];
    Я таким образом определяю, что за окно, и вывожу заголовок:
    HTML:
    1. <title><? echo $initial_page[explode('=', $_SERVER['REQUEST_URI'])[1]]; ?></title>
    Соответственно имеется список:
    PHP:
    1. $initial_page = array(
    2. "примеры" => "Страничка с примерами",
    3. "примеры2" => "Еще одна страничка с примерами",
    4. "index" => "Главная страничка",
    5. "testing" => "Тестовая страничка");
    и если я открываю страничку https://yandex.ru/old/search/?text=index, то у меня в заголовке пишется "Главная страничка"

    Теперь у меня добавились адреса, т.е. как есть такие:
    https://yandex.ru/old/search/?text=index
    так есть и такие:
    https://yandex.ru/old/search/?text=index&perform=примеры

    Соответственно код:
    PHP:
    1. echo explode('=', 'https://yandex.ru/old/search/?text=примеры')[1];
    больше не работает.

    Как добиться, что-бы к примеру ссылка https://yandex.ru/old/search/?text=index слово index добавлялось в переменную $link1
    а если ссылка такая https://yandex.ru/old/search/?text=index&perform=примеры, то переменная $link1='index'; и появлялась вторая переменная $link2='примеры';

    Это вроде как цикл какой-то надо использовать?
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.752
    Симпатии:
    1.322
    Адрес:
    Лень
    Догадываешься почему?
    0 - https://yandex.ru/old/search/?text
    1 - index&perform
    2 - примеры

    Как там на счет
     
    #7 MouseZver, 8 фев 2019
    Последнее редактирование: 8 фев 2019
  8. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Я с этим не разобралась пока что...
    Пока что сделала так:
    PHP:
    1.     if (explode('=', $_SERVER['REQUEST_URI'])[2])
    2.     {$title = $initial_page[explode('=', $_SERVER['REQUEST_URI'])[2]];}
    3.     else
    4.     {$title = $initial_page[explode('=', $_SERVER['REQUEST_URI'])[1]];}
    5. echo $title;
     
  9. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    PHP:
    1. $link = 'https://yandex.ru/old/search/?text=index';
    2. $parsedLink = parse_url($link);
    3.  
    4. if(isset($parsedLink['query'])){
    5. parse_str($parsedLink['query'], $query);
    6. var_dump($query);
    7. }
     
  10. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Всеравно мне непонятно, как этим пользоваться.
    Из этой ссылки: https://yandex.ru/old/search/?text=index&perform=примеры
    выводит: array(2) { ["text"]=> string(5) "index" ["perform"]=> string(14) "примеры" }

    А из этой: https://yandex.ru/old/search/?text=index
    выводит: array(1) { ["text"]=> string(5) "index" }

    Не совсем понимаю, как тут можно с массивом играть =(
     
  11. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Массив данных параметров из url с значениями. Пользуйся как хочешь.
    Что не понятно? Что сделать хочешь?
     
  12. Sofia

    Sofia Активный пользователь

    С нами с:
    25 сен 2008
    Сообщения:
    963
    Симпатии:
    2
    Я хочу понять, как правильно заголовок страницы обозначать.
    Странички статические, поэтому пока что в голову пришло определять странички с помощью элементов скрипта.

    Вот смотри, приведу живой пример (доступен для просмотра тут).
    Сайт состоит из 3 файлов: config.php, header.php, index.php.

    В файле config.php находится массив, вот весь файл:
    PHP:
    1. <?php
    2. //Определение переменной TITLE
    3. $initial_page = array(
    4. "index" => "Главная страница",
    5. "files" => "Файловый раздел",
    6. "user" => "Пользовательский раздел");
    7. //
    8. ?>
    В файле header.php как раз я использую функции разделителя элементов скрипта:
    PHP:
    1. <?
    2. // Send headers
    3. header('Content-type: text/html; charset=UTF-8');
    4. header('Cache-Control: private, no-cache="set-cookie"');
    5. header('Expires: 0');
    6. header('Pragma: no-cache');
    7. // Send headers
    8. include "config.php";
    9. ?>
    10. <!doctype html>
    11. <html lang="ru">
    12.     <head>
    13.         <?
    14.             if (explode('=', $_SERVER['REQUEST_URI'])[2])
    15.             {$title = $initial_page[explode('=', $_SERVER['REQUEST_URI'])[2]];}
    16.             else if (explode('=', $_SERVER['REQUEST_URI'])[1])
    17.             {$title = $initial_page[explode('=', $_SERVER['REQUEST_URI'])[1]];}  
    18.             else
    19.             {$title = "Главная страница";}
    20.         ?>
    21.         <title>Название -  <? echo $title; ?></title>  
    22.     </head>
    23.     <body>
    24. Шапка сайта<br>
    25. <a href="?page=index">Главная страничка</a> :: <a href="?page=files">Файловый раздел</a> :: <a href="?page=user">Пользовательский раздел</a>
    26. <hr>
    Ну и само основное тело index.php:
    PHP:
    1. <?
    2. include "header.php";
    3. $page = (isset($_GET['page']) && !empty($_GET['page']))?trim($_GET['page']):'index';
    4. switch($page)
    5. {
    6.     case 'index':
    7.     echo 'Должно в заголовке писаться: <b>Название -  Главная страничка</b>';
    8.     break;
    9.     case 'files':
    10.     echo 'Должно в заголовке писаться: <b>Название -  Файловый раздел</b>';
    11.     break;
    12.     case 'user':
    13.     echo 'Должно в заголовке писаться: <b>Название -  Пользовательский раздел</b>';
    14.     break;
    15.     default:
    16.     echo 'Страницы нет';
    17.     break;
    18. }
    19. ?>
    На данном примере используется только один разделитель =, поэтому можно было использовать без
    PHP:
    1. explode('=', $_SERVER['REQUEST_URI'])[2]
    Но вот если добавить например в раздел files еще страницы:
    Заменить это:
    PHP:
    1. case 'files':
    2.     echo 'Должно в заголовке писаться: <b>Название -  Файловый раздел</b>';
    3.     break;
    на это:
    PHP:
    1. case 'files':
    2.     echo 'Должно в заголовке писаться: <b>Название -  Файловый раздел</b>';
    3.         $perform = (isset($_GET['perform']) && !empty($_GET['perform']))?trim($_GET['perform']):'file_list';
    4.         switch($perform)
    5.         {
    6.         case 'file_list':
    7.         echo '<br>Должно в заголовке писаться: <b>Название -  Все файлы</b>';
    8.         break;
    9.         case 'file_add':
    10.         echo '<br>Должно в заголовке писаться: <b>Название -  Добавить файл</b>';
    11.         break;
    12.         default:
    13.             echo '404.php';
    14.         break;
    15.         }
    16.     break;
    то тогда понадобится использовать и
    PHP:
    1. explode('=', $_SERVER['REQUEST_URI'])[2]
    Так вот к чему я веду... Может есть вариант попроще с определением заголовка? Мне кажется что надо не массив использовать, а функцию... Или так тоже нормально?
     
  13. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. function route ($url, $v){
    2.     if($url ===  'index'){
    3.          echo "Главная страница";
    4.      }else if($url ===  'Файловый раздел'){
    5.           if($v === 0){
    6.                  echo 'фаил 1';
    7.           }else if($v === 1){
    8.                  echo 'фаил 2';
    9.           }else{
    10.                  echo "Главная страница";
    11.           }
    12.       }else if ($url ===  'user'){
    13.             echo "Пользовательский раздел";
    14.       }else{
    15.         echo "Главная страница";
    16.      }
    17. }
    И передаем:
    PHP:
    1. route ('index', 0);
    Очень грубо но как то так можно