03.03.2018, 11:09
|
Новичок на форуме
|
|
Регистрация: 03.03.2018
Сообщений: 2
|
|
Обрезать текст от символа до символа php
Привет всем, помогите пожалуйста, а то уже 2 день не могу реализовать задуманное.
Имеется начальная строка:
https://api.vk.com/blank.html#access_token=12345678900987654321&expires_in=0&user_id=123456789
Как из всего этого, выдернуть только то, что находится от тега access_token= и до тега &, чтобы получилось только это:
12345678900987654321
|
|
03.03.2018, 11:18
|
Профессор
|
|
Регистрация: 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.
|
|
03.03.2018, 11:31
|
Новичок на форуме
|
|
Регистрация: 03.03.2018
Сообщений: 2
|
|
Спасибо тебе, если я правильно понял, то здесь два способа?
|
|
03.03.2018, 12:29
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
eez54024, да, там 2 способа.
|
|
03.03.2018, 13:17
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
|
|
03.03.2018, 13:28
|
Профессор
|
|
Регистрация: 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;
|
|
03.03.2018, 13:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Nexus
|
$token=explode('#',$response,2);
|
Значит и о parse_url тоже не помним. )
|
|
03.03.2018, 13:47
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
laimas, нет, просто не знал о её существовании)
parse_str(parse_url($response,PHP_URL_FRAGMENT),$token);
Удобно, конечно, но нафиг было её вообще добавлять, если получить её результат совсем просто...
Этот же вопрос можно задать для множества других функций языка.
|
|
03.03.2018, 14:04
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Nexus
|
но нафиг было её вообще добавлять, если получить её результат совсем просто
|
Ну если охота самому разбирать, пожалуйста. Но данная функция не просто ковыряется, а пытается сделать максимум корректно, возвращая результат соответствующий. А вы пишите код не делая проверок.
|
|
10.03.2018, 03:20
|
|
Новичок на форуме
|
|
Регистрация: 05.11.2008
Сообщений: 5
|
|
Лучше всего и экономнее (процессорное время) регуляркой
$token=preg_replace("#^.*access_token=([^&]+?)&.*#i","$1",$response);
|
|
|
|