首次出现数字php后删除所有内容

时间:2015-05-04 07:00:06

标签: php preg-replace

我需要在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++;
}

但它也没有奏效。任何帮助?

3 个答案:

答案 0 :(得分:5)

如果您的第一次替换已经有效但移除太多,您可以捕获该数字并将其重新放入:

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

答案 1 :(得分:2)

在您的while循环中,尝试使用SELECT table_1.id, value/target FROM table_1 JOIN table_2 ON table_1.id = table_2.id 来获取角色而不是mb_substr($string, $i, 1)。我认为后者只返回字节索引$ i处的单字节,而不是具有多字节字符的字符串的数字$ i字符。

答案 2 :(得分:0)

示例代码:

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

示例输出:

abc123