Ответ 1
Вы можете использовать explode:
$string = "/gallery/image?a=b";
list($url,$querystring) = explode('?', $string, 2);
Есть ли функция строки php, чтобы обрезать строку после определенного символа. Я просмотрел сайт php.net и сделал поиск в Google, но ничего не нашел. Единственное решение, о котором я мог думать, было взорвано, а затем захватить первую часть массива, но это не самое элегантное решение.
Например
$string = "/gallery/image?a=b";
$string = imaginary_function($string,'?');
echo $string; //echoes "/gallery/image"
Кто-нибудь знает о хорошем чит-листе для функций манипуляции с php-строками? Благодаря
Вы можете использовать explode:
$string = "/gallery/image?a=b";
list($url,$querystring) = explode('?', $string, 2);
Возможно, что-то вроде этого:
$string = substr($string, 0, strpos($string, '?'));
Обратите внимание, что это не очень надежное (т.е. проверка ошибок и т.д.), но это может помочь вам решить вашу проблему.
Попробуйте strtok
:
$token = strtok($str, '?');
Обратите внимание, что второй параметр представляет собой список разделителей, а не строку разделителя.
Функции strstr
и stristr
обнаруживают первое вхождение в строке и возвращают все после него (включая строку поиска). Но вы поставляете true
в качестве третьего аргумента, он возвращает все перед строкой поиска.
$string = strstr( $string, '?', true); # Returns /gallery/image
Если совпадение не найдено, оно возвращает FALSE
, чтобы вы могли записать ошибку, например:
if( $path = strstr( $string, '?', true) ){
# Do something
}
function imaginary_function($string, $char) {
$index = strpos($char, $needle);
if ($index === false) { return $string };
return substr($string, 0, $index);
}
Отличный официальный список функций манипуляции строками доступен здесь.
Хотя чистые строковые функции могут дать лучшую производительность, это не просто строка; это URI. Поэтому имеет смысл использовать функцию, предназначенную для обработки таких данных:
echo parse_url("/gallery/image?a=b", PHP_URL_PATH);
// Output: /gallery/image
Это может быть излишним для того, что вы пытаетесь сделать, но если вы хотите разбить URL на части, попробуйте функцию PHP parse_url
. Здесь справочная страница PHP.
Затем вам понадобится часть "пути" результирующего массива.