我想在PHP中使用一个字符串并丢弃某个字符后的所有内容。但是,它不仅需要搜索一个字符,还需要搜索它们的数组。一旦它到达数组中的一个字符,它应该在该点之前返回字符串。
例如,如果我有一个数组:
$chars = array("a", "b", "c");
我如何通过以下字符串...
log dog hat bat
...最后:
log dog h
非常感谢任何解决方案。 :)
答案 0 :(得分:9)
您正在寻找strcspn功能。
<?php
$mask = "abc";
$string = "log dog hat bat";
$result = substr($string,0,strcspn($string,$mask));
var_dump($result);
?>
答案 1 :(得分:0)
Vinko 的回答肯定没有错,我可能更倾向于在专业脚本中推荐该技术,因为正则表达式可能执行得较慢,但纯粹为了研究人员的差异点,可以使用正则表达式。
>为了记录,要将['a', 'b', 'c']
的数组转换为abc
,只需调用implode($array)
——不需要空的胶水字符串。
代码:(Demo) -- 在第一次出现 a|b|c 时分成两半,然后访问第一个元素
echo preg_split('~[abc]~', $string, 2)[0];
Code: (Demo) -- 匹配非a|b|c字符的前导子串,然后访问第一个元素
echo preg_match('~^[^abc]+~', $string, $match) ? $match[0] : '';
我应该声明,如果您的任何列入黑名单的字符在字符类内部时对正则表达式引擎具有特殊含义,则需要对它们进行转义。