我需要在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++;
}
但它也没有奏效。任何帮助?
答案 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