正则表达式/ PHP在第一个字母之前删除所有内容

时间:2017-03-18 21:51:08

标签: php regex

我需要在第一个字母之前删除所有字符... 如何搜索[a-z]&的第一次出现的位置? [A-Z]。

$test = "1234 123423-34 This is a test";

$string = preg_replace('/REGEX/', "", $test);
echo $string;

应输出: 这是一个测试

4 个答案:

答案 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字母。

另请注意,您可以使用正则表达式完成任务(替换),而无需确定此位置(请参阅其他答案)。