2014-02-09 3 views
0

Я работаю над шаблоном строки запроса для приложения перенаправления. Можем ли мы использовать несколько операторов OR в strstr. ех. если я не уверен, будет ли это & or & or $ or / тогда можно использовать другие признаки в OR состоянии с $code= strstr($code, '/',+1);Получение определенного значения после применения строки manupulation в url

Пояснение:

URL-адрес придет к нашему перенаправлять приложения, как это

https://www.sample.com?key=1234~rety~1234~retu&c=12&k=12 
    OR 
    https://www.sample.com?key=1234~rety~1234~retu/c=12/k=12 
    OR 
    https://www.sample.com?key=1234~rety~1234~retu$c=12$k=12 

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

Я делаю следующее:

parse_str(parse_url($url, PHP_URL_QUERY), $parts); 
$keys = array_keys($parts); 
$size=sizeof($keys); 
$total=substr_count($uri, '~'); 
$var=$keys[0]; 
$value=$parts[$var]; 
for($i=0;$i<$size;$i++){ 
    $var=$keys[$i]; 
    $value=$parts[$var]; 
    $total=substr_count($value, '~'); 
    if($total==3){ 
     $digit_code = preg_split('/\~+/', $value); 
$digit_code = array_filter($digit_code); 
$digit_code = array_values($digit_code); 

$project_id=$digit_code[0]; 
$country_id=$digit_code[1]; 
$vendor=$digit_code[2]; 
$code=$digit_code[3]; 
//$code= strstr($code, '/',+1); 
    } 

Но это не работает, когда URL приходит как этот

https://www.sample.com?key=1234~rety~1234~retu/c=12/k=12 
or 
https://www.sample.com?key=1234~rety~1234~retu$c=12$k=12 
+0

Вы читали 'strstr' инструкция? –

+0

Да, я прошел через руководство. Я пытаюсь найти способ поработать – Ethen

ответ

0

В этом месте с помощью регулярных выражений может быть применимо:

preg_match('/((?:\/|&|\$).*)/', $code, $matches); 
$code = $matches[1]; 

Это будет соответствовать/или & или $, за которым следует остальная часть строки.

http://au1.php.net/preg_match

0

вы имеете в виду в PHP перенаправлением? или строка запроса в базе данных для извлечения данных?

вы можете читать strstr руководство пользователя.

+0

Пожалуйста, перечитайте мой вопрос, который я обновил – Ethen

0

Я нашел решение:

Я просто положить

if (strpos($code,'/') !== false) { 
    $code= strstr($code, '/',+1); 
} 
    if (strpos($code,'$') !== false) { 
    $code= strstr($code, '$',+1); 
} 

сразу после того, как цикл

Смежные вопросы