Как я могу получить только содержимое строки запроса, смотрящей из?:
asegment? param1 = value1 & param2 = значение2
ПРИМЕЧАНИЕ. Мне нужен только весь контент после «?», Также я хочу опустить этот символ.
Вот это Regex \?(.+)
И Rubular для его доказательства . И использовать его:
preg_match("/\?(.+)/", $inputString, $matches); if (!$matches) { // no matches } $result = $matches[1];
Если вы уверены, что в вашей строке есть запрос, то это сделает трюк:
echo substr( $string, strpos( $string, '?' ) + 1 );
Если ваша строка не может содержать запрос, проверьте сначала: strpos
вернет boolean false.
\? ([А-z0-9A-г & =] +) *
Похоже, вы имеете дело с URL-адресами, рассмотрите библиотеку, предназначенную для них. И если вы только заинтересованы в получении всего после?, То используйте что-то вроде
String s = "asegment?param1=value1¶m2=value2"; String paramStr = s.substring(s.indexOf('?')-1);
Изменить: не видел, что вы используете PHP – игнорируете.
У вас есть пара опций, прежде чем для этого не требуется регулярное выражение
$val = (strpos("?", $url) !== false? substr($url, strpos($url, "?")): "");
или parse_url
$val = parse_url($url, PHP_URL_QUERY);
РЕДАКТИРОВАТЬ
Исправлено условие, когда нет строки запроса
Это простое решение, использующее strrev
и strtok
…
$url = "asegment?param1=value1¶m2=value2"; echo strrev(strtok(strrev($url),'?'));
Вы должны использовать глобальный массив $ _GET <?php echo $_GET["param1"]; ?>
<?php echo $_GET["param1"]; ?>