Php修剪特定字符的字符串

时间:2009-12-02 06:22:02

标签: php string

是否有一个php字符串函数来修剪特定字符后的字符串。我在php.net网站上看​​了一下并进行了谷歌搜索但找不到任何东西。我能想到的唯一解决方案是爆炸,然后抓住阵列的第一部分,但这不是最优雅的解决方案。

例如

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

有没有人知道php字符串操作函数的好作弊表? 感谢

7 个答案:

答案 0 :(得分:23)

也许是这样的:

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

请注意,这不是非常强大(即没有错误检查等),但它可以帮助您解决问题。

答案 1 :(得分:21)

您可以使用explode

$string = "/gallery/image?a=b";
list($url,$querystring) = explode('?', $string, 2);

答案 2 :(得分:10)

尝试strtok

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

请注意,第二个参数是分隔符列表,而不是分隔符字符串。

答案 3 :(得分:5)

strstrstristr函数查找字符串中的第一个匹配项并返回其后的所有内容(包括搜索字符串)。但是你提供true作为第三个参数,它会把搜索字符串前的所有内容都带回来。

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

如果未找到匹配项,则会返回FALSE,因此您可以像这样编写错误检查:

if( $path = strstr( $string, '?', true) ){
   # Do something
}

答案 4 :(得分:2)

function imaginary_function($string, $char) {
  $index = strpos($char, $needle);
  if ($index === false) { return $string };

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

有一个优秀的正式字符串操作函数列表here

答案 5 :(得分:1)

虽然纯字符串函数可以提供更好的性能,但这不仅仅是一个字符串;这是一个URI。因此,使用处理此类数据的函数更有意义:

echo parse_url("/gallery/image?a=b", PHP_URL_PATH);
// Output: /gallery/image

答案 6 :(得分:0)

这对于您尝试执行的操作可能有点过分,但如果您想将URL拆分为多个部分,请尝试使用PHP函数parse_url。这是PHP manual page

然后,您需要生成数组的“路径”部分。