执行此操作的最佳方法(尽管有一个小警告)将是strspn()或strcspn()之一,但根据您想要做什么会有细微的差别......
如果要查找除 'x' 以外的字符的第一次出现,则需要strspn()
:
php > $pos = strspn('xxxwrrw', 'x');
php > var_dump($pos);
int(3)
如果你需要特别是 'w' 或 'r'的第一次出现,你需要strcspn()
:
php > $pos = strcspn('xxxwrrw', 'rw');
php > var_dump($pos);
int(3)
但正如我所说,有一个小警告......这些函数返回匹配或不匹配给定掩码/针的初始长度('c'strcspn()
代表“计数器”)。
这意味着他们永远不会回来false
,你总是会得到一个积极的结果,例如'xxxxxxx':
php > $pos = strcspn('xxxxxx', 'rw');
php > var_dump($pos);
int(6)
因此,您可能需要检查返回的位置是否确实存在,如下所示:
php > $input = 'xxxxxx';
php > $pos = strspn($input, 'x'); // i.e. $pos = 6;
php > var_dump(isset($input[$pos]));
bool(false) // There was no character other than 'x'
原答案:
php > $string = 'xrwxrxx';
php > preg_match('/[^x]/', $string, $matches, PREG_OFFSET_CAPTURE);
php > echo $matches[0][1];
1