Site icon Init HTML

Thao tác với XML trong PHP

Ví dụ kiểm tra, thêm, xóa, lấy địa chỉ email từ XML.

XML

Tập tin email.xml nằm trong thư mục data có định dạng như sau:

<?xml version="1.0"?>
<emails>
    <email>
        <value>email1@email.com</value>
        <date>2016-12-09 04:05:05</date>
    </email>
    <email>
        <value>email1@email.com</value>
        <date>2016-12-09 04:07:54</date>
    </email>
</emails>

PHP

<?php
    /*
     * Kiểm tra email tồn tại
     */
    function check_email($email, $url = './data/email.xml') {
        $doc = new DOMDocument('1.0');
        $doc->load($url);
        $emails = $doc->getElementsByTagName('email');
        foreach ($emails as $e) {
            $val = $e->getElementsByTagName('value');
            if ($email == $val->item(0)->nodeValue) {
                return true;
            }
        }
        return false;
    }

    /*
     * Thêm email
     */
    function write_email($email, $url = './data/email.xml') {
        $xml = simplexml_load_file($url);
        $entry = $xml->addChild('email');
        $entry->addChild('value', $email);
        $entry->addChild('date', date('Y-m-d H:i:s', time()));
        $doc = new DOMDocument('1.0');
        $doc->formatOutput = true;
        $doc->preserveWhiteSpace = true;
        $doc->loadXML($xml->asXML(), LIBXML_NOBLANKS);
        $doc->save($url);
    }

    /*
     * Lấy danh sách email
     */
    function get_emails($url = './data/email.xml') {
        $doc = new DOMDocument('1.0');
        $doc->load($url);
        $emails = $doc->getElementsByTagName('email');
        $email_list = [];
        foreach ($emails as $e) {
            $val = $e->getElementsByTagName('value');
            $dat = $e->getElementsByTagName('date');
            $email_list[] = array(
                'email' => $val->item(0)->nodeValue,
                'date' => $dat->item(0)->nodeValue,
            );
        }
        return $email_list;
    }

    /*
     * Xóa email
     */
    function delete_email($email, $url = './data/email.xml') {
        $doc = new DOMDocument('1.0');
        $doc->load($url);
        $the_document = $doc->documentElement;
        $emails = $the_document->getElementsByTagName('email');
        $node = null;
        foreach ($emails as $e) {
            $val = $e->getElementsByTagName('value');
            if ($email == $val->item(0)->nodeValue) {
                $node = $e;
                break;
            }
        }
        if ($node != null) {
            $the_document->removeChild($node);
        }
        $doc->save($url);
    }
?>

Sử dụng

<?php
    if (!check_email('email3@email.com')) { // Kiểm tra email tồn tại
        write_email('email3@email.com'); // Thêm email
    }

    $data = get_emails();
    if ($data) {
        foreach ($data as $row) {
            // Xuất danh sách email
            echo $row['email'];
            echo ' thêm ngày ';
            echo $row['date'];
        }
    }

    if (check_email('email3@email.com')) { // Kiểm tra email tồn tại
        delete_email('email3@email.com'); // Xóa email
    }
?>

Chúc các bạn thành công!

Exit mobile version