Loading...
การแยก คำนำหน้าชื่อ ชื่อ สกุล ด้วย php
ผู้เขียน : กฤษฎาพงษ์ สุตะ
เผยแพร่เมื่อ : 5 พฤศจิกายน 2565 23:51:45 ปรับปรุงเมื่อ : 6 พฤศจิกายน 2565 14:17:00
ลิงก์ : https://www.ef101.xyz/บทความ/การแยก-คำนำหน้าชื่อ-ชื่อ-สกุล-ด้วย-php

วันนี้เอาปัญหาที่เจอมาเล่นให้อ่านอีกแล้วครับ เนื่องจากจะพัฒนาเว็บ ที่เดิมเขียนแบบ Hard Core มาใช้ Laravel โดยการนำข้อมูลมาด้วย
ปัญหามีอยู่ว่า เว็บเดิม เก็บ คำนำหน้าชื่อ ชื่อ สกุล ไว้ใน ฟิลด์ เดียว ทำให้บางครั้ง user ไม่ได้กรอก คำนำหน้าชื่อ เว็บใหม่เลยแยกเป็น prefix firstname และ lastname เลยต้องมาเขียนโค๊ดแยกออกจากชื่อ
ใครที่เจอปัญหานี้ลองเอาไปปรับใช้ได้ครับ

 

$i = 0;
while ($data = mysqli_fetch_assoc($result)) {
    $i++;
    $list = preg_split("/[\s]+/", trim($data["name"])); //แยกชื่อกับสกุล
    $firstname = "";
    $lastname = "";
    if (!empty($list[0])) {
        $firstname = $list[0];
    }

    if (!empty($list[1])) {
        $lastname = $list[1];
    }

    if (!empty($list[2])) { // กรณีเจอ ว่าที่ ร.ต. (มีช่องว่างหลัง ว่าที่)
        $firstname = $list[0] . $list[1];
        $lastname = $list[2];
    }
    $prefix_arr = [
        //ค้นหา => ใช้ในระบบใหม่
        "นาย" => "นาย",
        "นางสาว" => "นางสาว",
        "นาง" => "นาง",
        "น.ส." => "นางสาว",
        "ว่าที่ร.ต." => "ว่าที่ ร.ต.",
        "ว่าที่ร.ท." => "ว่าที่ ร.ท.",
        "ว่าที่ร.อ." => "ว่าที่ ร.อ.",
        "ว่าที่ร้อยตรี" => "ว่าที่ ร.ต.",
        "ว่าที่ร้อยโท" => "ว่าที่ ร.ท.",
        "ว่าที่ร้อยเอก" => "ว่าที่ ร.อ.",
        //เพิ่มเติม คำหน้าชื่อที่เจอในระบบ
        "จ.ส.ต." => "จ.ส.ต.",
        "สิบเอก" => "สิบเอก",
    ];
    $prefix = "";
    foreach ($prefix_arr as $key => $val) {
        if (strpos($firstname, $key) !== false) {
            $prefix = $val;
            $firstname = str_replace($key, "", $firstname); //ลบคำนำหน้าชื่อออก
            continue;
        }
    }
    echo "{$data['id']}.{$prefix}++{$firstname}++{$lastname}<br>";
}
echo "total : " . $i;

 

ความคิดเห็น :
เข้าสู่ระบบก่อนจึงจะแสดงความคิดเห็นได้
Sign in with Google Sign in with Facebook Sign in with Github