Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.03.2018, 11:09
Новичок на форуме
Отправить личное сообщение для eez54024 Посмотреть профиль Найти все сообщения от eez54024
 
Регистрация: 03.03.2018
Сообщений: 2

Обрезать текст от символа до символа php
Привет всем, помогите пожалуйста, а то уже 2 день не могу реализовать задуманное.
Имеется начальная строка:
https://api.vk.com/blank.html#access_token=12345678900987654321&expires_in=0&user_id=123456789

Как из всего этого, выдернуть только то, что находится от тега access_token= и до тега &, чтобы получилось только это:
12345678900987654321
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2018, 11:18
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

<?php
    $response='https://api.vk.com/blank.html#access_token=12345678900987654321&expires_in=0&user_id=123456789';
    $token=preg_replace('#.+access_token=([^&]+?)&.+#uim','$1',$response);
    echo $token, PHP_EOL;
    
    $token=explode('#',$response,2);
    $token=array_reduce(explode('&',end($token)),function($res,$item){
        $item=explode('=',$item);
        $res[reset($item)]=end($item);
        
        return $res;
    },array());
    $token=$token['access_token'];
    echo $token;
http://sandbox.onlinephpfunctions.co...b79f0460dc551f

Последний раз редактировалось Nexus, 03.03.2018 в 11:20.
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2018, 11:31
Новичок на форуме
Отправить личное сообщение для eez54024 Посмотреть профиль Найти все сообщения от eez54024
 
Регистрация: 03.03.2018
Сообщений: 2

Спасибо тебе, если я правильно понял, то здесь два способа?
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2018, 12:29
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

eez54024, да, там 2 способа.
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2018, 13:17
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Nexus, parse_str. )
Ответить с цитированием
  #6 (permalink)  
Старый 03.03.2018, 13:28
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

laimas, я даже про эту функцию и не вспомнил)

<?php
    $response='https://api.vk.com/blank.html#access_token=12345678900987654321&expires_in=0&user_id=123456789';

    $token=explode('#',$response,2);
    parse_str(end($token),$token);
    $token=$token['access_token'];
    echo $token;
Ответить с цитированием
  #7 (permalink)  
Старый 03.03.2018, 13:36
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
$token=explode('#',$response,2);
Значит и о parse_url тоже не помним. )
Ответить с цитированием
  #8 (permalink)  
Старый 03.03.2018, 13:47
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

laimas, нет, просто не знал о её существовании)
parse_str(parse_url($response,PHP_URL_FRAGMENT),$token);

Удобно, конечно, но нафиг было её вообще добавлять, если получить её результат совсем просто...
Этот же вопрос можно задать для множества других функций языка.
Ответить с цитированием
  #9 (permalink)  
Старый 03.03.2018, 14:04
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
но нафиг было её вообще добавлять, если получить её результат совсем просто
Ну если охота самому разбирать, пожалуйста. Но данная функция не просто ковыряется, а пытается сделать максимум корректно, возвращая результат соответствующий. А вы пишите код не делая проверок.
Ответить с цитированием
  #10 (permalink)  
Старый 10.03.2018, 03:20
Аватар для Atheist
Новичок на форуме
Отправить личное сообщение для Atheist Посмотреть профиль Найти все сообщения от Atheist
 
Регистрация: 05.11.2008
Сообщений: 5

Лучше всего и экономнее (процессорное время) регуляркой
$token=preg_replace("#^.*access_token=([^&]+?)&.*#i","$1",$response);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Вопрос: И опять про offsetLeft... sigurd Общие вопросы Javascript 11 04.10.2010 14:06
lastChild работает в IE, как тут быть? Puaris83 Firefox/Mozilla 4 17.04.2010 23:56
Вопрос по относительному позиционированию DIV XPOMOB (X)HTML/CSS 11 15.07.2009 17:02