2

一旦遇到几个不需要的字符之一,我想丢弃字符串中的所有剩余字符。

一旦遇到列入黑名单的字符,就应该返回该点之前的字符串。

例如,如果我有一个数组:

$chars = array("a", "b", "c");

我将如何通过以下字符串...

log dog hat bat

...最终得到:

log dog h
4

2 回答 2

9

strcspn函数是您正在寻找的。

<?php

$mask = "abc";

$string = "log dog hat bat";

$result = substr($string,0,strcspn($string,$mask));

var_dump($result);

?>
于 2008-11-15T10:29:43.547 回答
0

Vinko 的回答当然没有错,我可能更倾向于在专业脚本中推荐该技术,因为正则表达式可能执行得较慢,但纯粹为了研究人员的不同点,可以使用正则表达式。

为了记录,要将数组转换['a', 'b', 'c']abc,只需调用implode($array)-- 不需要空的粘合字符串。

代码: ( Demo ) -- 在第一次出现 a|b|c 时分成两半,然后访问第一个元素

echo preg_split('~[abc]~', $string, 2)[0];

代码: ( Demo ) -- 匹配非 a|b|c 字符的前导子串,然后访问第一个元素

echo preg_match('~^[^abc]+~', $string, $match) ? $match[0] : '';

我应该声明,如果您的任何列入黑名单的字符在字符类中对正则表达式引擎具有特殊含义,那么它们将需要被转义。

于 2021-03-10T13:11:12.660 回答