删除第一次出现数字 php 后的所有内容

remove everything after first occurrence of number php

我需要在 php 字符串中第一次出现数字后删除所有内容,但要保留数字。我无法保留号码:当我写这篇文章时

preg_replace('/[0-9].*/', '', $string); 

它删除了包括数字在内的所有内容。我的另一个问题是字符串是希伯来语我尝试使用这个函数:

$count = mb_strlen($string,'UTF-8');
$i = 0;
while( $i < $count ) {
    if( ctype_digit($string[$i]) ) {
        echo "First digit found at position $i.";
        return;
    }
    $i++;
}

但也行不通。有帮助吗?

如果您的第一个替换已经有效但删除了太多,您可以捕获该号码并将其放回:

preg_replace('/([0-9]+).*/', '', $string); 
               ^      ^       ^^ put the captured value back

在您的 while 循环中,尝试使用 mb_substr($string, $i, 1) 而不是 $string[$i] 来获取字符。我认为后者只是 returns 字节索引 $i 处的单个字节,而不是具有多字节字符的字符串的数字 $i 字符。

示例代码:

$str = "abc123efg567jjjj";
echo preg_replace("/([^0-9]*[0-9]*)(.*)/", "", $str);

示例输出:

abc123