PHP:相当于MySQL';s函数子串_索引?

PHP:相当于MySQL';s函数子串_索引?,php,mysql,substring,Php,Mysql,Substring,我喜欢MySQL中的函数,特别是因为可以使用负索引从字符串的右侧开始搜索 在PHP中是否有此函数的等效项?(或者是一种简单的方法,只需一点代码即可实现)没有一个库函数可以为您提供相同的功能,但您可以获得一行程序: $str = "www.mysql.com"; echo implode('.', array_slice(explode('.', $str), 0, 2)); // prints "www.mysql" echo implode('.', array_slice(explode('

我喜欢MySQL中的函数,特别是因为可以使用负索引从字符串的右侧开始搜索


在PHP中是否有此函数的等效项?(或者是一种简单的方法,只需一点代码即可实现)

没有一个库函数可以为您提供相同的功能,但您可以获得一行程序:

$str = "www.mysql.com";
echo implode('.', array_slice(explode('.', $str), 0, 2)); // prints "www.mysql"
echo implode('.', array_slice(explode('.', $str), -2));   // prints "mysql.com"
轻松将其转化为一个功能:

function substring_index($subject, $delim, $count){
    if($count < 0){
        return implode($delim, array_slice(explode($delim, $subject), $count));
    }else{
        return implode($delim, array_slice(explode($delim, $subject), 0, $count));
    }
}
函数子字符串\u索引($subject、$delim、$count){
如果($count<0){
返回内爆($delim,数组_切片(explode($delim,$subject),$count));
}否则{
返回内爆($delim,数组_切片(explode($delim,$subject),0,$count));
}
}
函数子字符串索引($subject、$delim、$count){
如果($count<0){
返回内爆($delim,数组_切片(explode($delim,$subject),$count));
}否则{
返回内爆($delim,数组_切片(explode($delim,$subject),0,$count));
}
}
我想

string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
是适合您的php函数

strstr-查找字符串的第一个匹配项

<?php
$email  = 'name@example.com';
$domain = strstr($email, '@');
echo $domain; // prints @example.com

$user = strstr($email, '@', true); // As of PHP 5.3.0
echo $user; // prints name
?>

我很好奇,使用preg/match设置测试了另一种方法,然后对其进行重构,以允许使用任意数量的分隔符/计数。我在另一个示例使用的计数检查中添加了此项,但我可能还建议对分隔符字段进行某种清理

function substring_index($subject, $delim, $count){
  if($count < 0){
    $notRe = '[^\\'.$delim.']*';
    $elem = array();
    for($x=1;$x<=$count;$x++){
      array_push($elem,$notRe);
    }
    $re = '/^('.implode('\\'.$delim,$elem).')/';
    preg_match($re, $subject,$m);
    if(count($m) == 2) {
      return $m[1];
    }
  }
}
函数子字符串\u索引($subject、$delim、$count){
如果($count<0){
$notRe='[^\\'.$delim.]*';
$elem=array();

对于($x=1;$x,如果只需要子字符串_索引(str,delim,1)的等效项,则可以使用:

list($str,) = explode($delim, $str);

对于那些思考substr的人,请阅读
list($str,) = explode($delim, $str);