删除第一次出现数字 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
我需要在 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