我试图提取一个子字符串。我需要一些帮助,在PHP做它。
以下是我正在使用的一些示例字符串和我需要的结果:
home/cat1/subcat2 => home
test/cat2 => test
startpage => startpage
我想获取第一个/之前的字符串,但如果没有/,则获取整个字符串。
我试过了,
substr($mystring, 0, strpos($mystring, '/'))
我想它说的是-获取/的位置然后获取从0到那个位置的子字符串。
我不知道如何处理没有/的情况,而不使声明太大。
有没有一种方法来处理这种情况,也不使PHP语句过于复杂?
PHP 5.3中的函数strstr()应该完成这项工作。第三个参数应该设置为true..
但是如果你没有使用5.3,那么下面的函数应该可以准确地工作:
function strbstr( $str, $char, $start=0 ){
if ( isset($str[ $start ]) && $str[$start]!=$char ){
return $str[$start].strbstr( $str, $char, $start+1 );
}
}
我还没有测试它,但这应该工作得很好..而且速度也很快
迟到总比不到好。PHP有一个预定义的函数。这是一个好方法。
strstr
如果你想获得匹配前的部分,只需将before_needle(第3个参数)设置为true
http://php.net/manual/en/function.strstr.php
function not_strtok($string, $delimiter)
{
$buffer = strstr($string, $delimiter, true);
if (false === $buffer) {
return $string;
}
return $buffer;
}
var_dump(
not_strtok('st/art/page', '/')
);