我需要在第一个字母之前删除所有字符... 如何搜索[a-z]&的第一次出现的位置? [A-Z]。
$test = "1234 123423-34 This is a test";
$string = preg_replace('/REGEX/', "", $test);
echo $string;
应输出: 这是一个测试
答案 0 :(得分:5)
使用带有主要锚点的否定字符类。
^[^A-Za-z]+
正则表达式演示:https://regex101.com/r/149aDt/1
PHP演示:https://3v4l.org/7m6RZ
$test = "1234 123423-34 This is a test";
echo preg_replace('/^[^A-Za-z]+/', '', $test);
答案 1 :(得分:2)
你可以试试这个:
<?php
$test = "1234 123423-34 This is a test";
for($i=0;$i<strlen($test);$i++){
if(!ctype_alpha($test[$i])){
$test[$i] = '';
}else{
break;
}
}
echo $test;
答案 2 :(得分:1)
除了chris85的回答,如果你想处理unicode字符:
$str = '123 μεγάλο τριχωτό της γάτας';
$result = preg_replace('~\PL+~Au', '', $str);
答案 3 :(得分:0)
您可以使用strcspn
函数返回与任何给定字符不匹配的初始字符串段的长度,例如:
$position = strcspn($test, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
这不包括Unicode字母。
另请注意,您可以使用正则表达式完成任务(替换),而无需确定此位置(请参阅其他答案)。