在字符串中查找第一个非字母数字字符的出现

3

我知道可以使用strpos找到字符串的第一个出现位置。但是否可能找到一个非字母或数字字符的第一个出现位置。

例如:

strpos2('hello world') => 5

strpos2('hi!you') => 2


strpos适用于所有字符。您可以使用strpos('hello world',' ')strpos('hi!you','!') - undefined
@MohammadHamedani我不是在寻找特定字符。我想要找到第一个非字母字符(任何字符)。不是要找第一个空格或者!。 - undefined
preg_split使用[^\w]进行分割,并获取第一个片段的长度。如果您不想包括_,请编写更严格的条件。 - undefined
@splash58 是的。我认为/[^A-Za-z0-9]/更准确。 - undefined
1个回答

3
尝试使用preg_match
$string = "hi!you";
preg_match('/[\W]+/', $string, $match, PREG_OFFSET_CAPTURE);
print_r($match);

在这里,$match将返回第一个匹配的非字母字符的位置


谢谢。我认为做一些改变会提高它的效果:if(preg_match("/[\W]+/", $str, $matches, PREG_OFFSET_CAPTURE)) { $index = $matches[0][1]; } - undefined
是的,提取哪些信息由你来决定。 - undefined
2
好的,我要求第一次出现。 - undefined
1
好的,去吧.. :) - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接