PHP:相当于 MySQL 的函数 SUBSTRING_INDEX ?

Posted

技术标签:

【中文标题】PHP:相当于 MySQL 的函数 SUBSTRING_INDEX ?【英文标题】:PHP: equivalent of MySQL's function SUBSTRING_INDEX ? 【发布时间】:2011-10-16 16:19:12 【问题描述】:

我喜欢 mysql 中的 SUBSTRING_INDEX 函数,尤其是因为您可以使用负索引从字符串的右侧开始搜索。

php 中是否有与此功能等效的功能? (或使用一些代码的简单方法)

【问题讨论】:

对于那些想substr的人,请阅读SUBSTRING_INDEX的定义 【参考方案1】:

如果您只需要 SUBSTRING_INDEX(str, delim, 1) 的等效项,则可以使用:

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

【讨论】:

【参考方案2】:

我很好奇并使用 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];
    
  

【讨论】:

【参考方案3】:

我觉得

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
?>

【讨论】:

【参考方案4】:

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

$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));
    

【讨论】:

【参考方案5】:
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));
    

【讨论】:

以上是关于PHP:相当于 MySQL 的函数 SUBSTRING_INDEX ?的主要内容,如果未能解决你的问题,请参考以下文章

mysql的内置函数学习笔记

mysqli函数库的使用

Mysql——视图(简单理解)

php基础----函数

PHP 数据访问

MySQLi 相当于 mysql_result()?