PHP搜索字符串,拆分为数组?

时间:2018-01-25 22:23:55

标签: php string explode

我需要在字符串中搜索用逗号分隔的用户名。必须考虑字符串可能是空的,大写或小写,或者也可能在逗号之前或之后包含空格。它可能是:

$string = "Chris, Tom,Jeff,Roger"
$string = "Chris,Tom , Jeff ,Roger"
$string = ",,,,Chris,tom,Jeff,Roger,,,,"
etc...

说我需要查看"Tom"是否在$string。我最好使用explode将字符串拆分成数组,然后修剪然后检查每个条目?或者有更好的方法吗?

3 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。这非常精确和准确:

$found = in_array('Tom', array_filter(explode(',', $string)));

不区分大小写:

$found = in_array('tom', array_filter(explode(',', strtolower($string))));

答案 1 :(得分:0)

您可以手动检查。

public function splitNames() {
    $string = ",,,,Chris,tom,Jeff,Roger,,,,";
    $splited = explode(",", $string);
    foreach ($splited as $name) {
        if ($name == null || $name == "") {
            continue;
        } else {
            $names[] = ucfirst(strtolower(trim($name)));
        }
    }

    return $names;
}

答案 2 :(得分:0)

preg_matchi修饰符一起使用,您可以不区分大小写的方式验证字符串是否包含数据:

function contains($value, $string) {
    return preg_match('/(?<=[[:punct:]|[:space:]])(' . $value . ')(?=[[:punct:]|[:space:]])/i', $string, $match);
}