PHP 怎么把mysql中一个字段中包含的中文筛选出来,添加到另一个空字段中。

求代码。就像图1中 payment字段里面是一些数据,由中文和英文构成的,有的中文在前面 有的中文在后面,有的前后都有。没有什么规律可言,英文有电话号,有邮箱,还有银行卡号。我想有没有什么思路能把 payment字段中的中文,移动到zhongwen字段中。变成像图2那样的效果我要整理的表里面有几千条这样的数据,求个批量的代码。万分感谢。
补充一点,payment大概有几千条数据,
有一些前面有中文,
有一些后面有中文,
有一些前后都有
还有一些没有中文
求高手大神帮我写个demo 好人一生平安,打酱油的就不要回答了
最新回答
戏柚画西楼

2025-06-21 15:30:40

$conn = mysqli_connect('127.0.0.1', 'root', '', 'test');
mysqli_query($conn, "set names 'utf8'");
mysqli_query($conn, 'set character_set_client=utf8');
mysqli_query($conn, 'set character_set_results=utf8');
$res = mysqli_query($conn, 'select * from orders');

while ($row = mysqli_fetch_object($res)) {
    //用正则取payment中的汉字到$chinese变量
    preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $row->payment, $chinese);
    //把preg_match_all匹配的$chinese数组转为字符串
    $chinese = implode('', $chinese[0]);
    //把原字段中的中文用正则删掉
    $payment = preg_replace("/[\x{4e00}-\x{9fa5}]+/u", '', $row->payment);

    //执行更新
    $sql = "update orders set payment = '$payment' , zhongwen = '$chinese' where Id = '$row->Id' ";
    mysqli_query($conn, $sql);
}

demo中的数据库是我新建的一个测试库test  表名orders  主键Id

实际使用需要先改成你的实际真实数据库信息

执行前

执行后