Php обрезать строку на определенный символ - PullRequest
10 голосов
/ 02 декабря 2009

Есть ли строковая функция php для обрезки строки после определенного символа. Я заглянул на сайт php.net и сделал поиск в Google, но ничего не смог найти. Единственное решение, которое я мог придумать, было взорвать и затем захватить первую часть массива, но это не самое элегантное решение.

Например

$string = "/gallery/image?a=b";
$string = imaginary_function($string,'?');
echo $string; //echoes "/gallery/image"

Кто-нибудь знает хороший шпаргалку для функций манипулирования строк php? Спасибо

Ответы [ 7 ]

23 голосов
/ 02 декабря 2009

Может быть, что-то вроде этого:

$string = substr($string, 0, strpos($string, '?'));

Обратите внимание, что это не очень надежно (то есть без проверки ошибок и т. Д.), Но может помочь вам решить вашу проблему.

21 голосов
/ 02 декабря 2009

Вы можете использовать взорвать :

$string = "/gallery/image?a=b";
list($url,$querystring) = explode('?', $string, 2);
10 голосов
/ 02 декабря 2009

Попробуйте strtok:

$token = strtok($str, '?');

Обратите внимание, что второй параметр - это список разделителей, а не строка разделителя.

5 голосов
/ 02 декабря 2009

Функции strstr и stristr находят первое вхождение в строке и возвращают все после него (включая строку поиска). Но если вы введете true в качестве третьего аргумента, он возвращает все перед строкой поиска.

$string = strstr( $string, '?', true); # Returns /gallery/image

Если совпадение не найдено, возвращается FALSE, чтобы вы могли написать проверку на ошибку следующим образом:

if( $path = strstr( $string, '?', true) ){
   # Do something
}
2 голосов
/ 02 декабря 2009
function imaginary_function($string, $char) {
  $index = strpos($char, $needle);
  if ($index === false) { return $string };

  return substr($string, 0, $index);
}

Превосходный официальный список функций для работы со строками доступен здесь .

1 голос
/ 21 августа 2013

Хотя чистые строковые функции могут дать лучшую производительность, это не просто строка; это URI. Поэтому имеет смысл использовать функцию, предназначенную для обработки таких данных:

echo parse_url("/gallery/image?a=b", PHP_URL_PATH);
// Output: /gallery/image
0 голосов
/ 02 декабря 2009

Это может быть излишним для того, что вы пытаетесь сделать, но если вы хотите разбить URL на части, попробуйте функцию PHP parse_url. Вот справочная страница PHP .

Затем вам понадобится часть "path" результирующего массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...