Изменить переменную в зависимости от значения параметра url - PullRequest
0 голосов
/ 20 мая 2018

Есть ли способ php для изменения переменных php в зависимости от значений определенных параметров в URL?

Например, у меня есть этот конкретный URL:

http://example.com/post-url-that-contains-value2/?custom_parameter=value1-value2-value3

Что я хочуdo проверяет, присутствует ли значение 2 (текстовая строка) только в custom_parameter, без проверки в URL-адресе записи (который, к сожалению, содержит ту же строку, что и значение 2).И когда я проверяю и нахожу значение 2 в custom_parameter, то меняю $ myphpvariable на конкретное значение.

Что я делал, так это сделал:

$checkurl = $_SERVER['QUERY_STRING'];

if(preg_match('/^(?=.*custom_parameter)(?=.*value2).*$/m', $checkurl) === 1) {
     $myphpvariable = 'Found!';
     }

else {
     $myphpvariable = 'NOT Found!';
     }

К сожалению, этот метод проверяет весь URL-адрес и изменит $myphpvariable на 'Found!' даже в случае, когдаURL, например, http://example.com/post-url-that-contains-value2/?custom_parameter=value3 .... потому что он видит значение2 в URL-адресе сообщения.

Есть идеи, как заставить это работать правильно?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вместо просмотра всего URL, я бы просто использовал массив $_GET, так как это самый простой способ получить доступ к параметрам строки запроса.

strpos(), вероятно, самый быстрый и простойМожно использовать массив $_GET для поиска определенного текста, но вы также можете использовать аналогичный подход, учитывая, что все ваши значения разделены одним и тем же разделителем.Таким образом, он разбивает строку значения custom_parameter на символе - на массив и затем ищет в этом массиве value2.Это может быть более полезно, если вы хотите искать другие значения позже.

$customParamater = $_GET["custom_parameter"];
$values = explode("-",$customParamater);
if (in_array("value2",$values)) {
     $myphpvariable = 'Found!';
} else {
     $myphpvariable = 'NOT Found!';
}
0 голосов
/ 20 мая 2018

Вы можете проверить URI и параметры отдельно

//explode the url on the ? and get the first part, the uri
$uri = explode('?', $_SERVER['REQUEST_URI'])[0];

//get everything in custom_parameter
$customParameter = $_GET['custom_parameter'];

//check value2 is in not in the uri and is in the params
if(strpos($uri, 'value2') === false && strpos($customParameter, 'value2') !== false){
    $myphpvariable = 'Found!';

}
else {
    $myphpvariable = 'NOT Found!';
}

или, если вы просто хотите проверить custom_parameter и игнорировать URL

//get everything in custom_parameter
$customParameter = $_GET['custom_parameter'];

if(strpos($customParameter, 'value2') !== false){
    $myphpvariable = 'Found!';

}
else {
    $myphpvariable = 'NOT Found!';
}
...