Hướng dẫn
Quảng cáo

Cách trích xuất nội dung giữa các từ khóa bằng PHP

Đôi khi trong các dự án PHP của mình bạn cần trích xuất một hoặc nhiều nội dung có đặc trưng giống nhau là có thể xác định được điểm bắt đầu và kết thúc

Trong khi bóc tách dữ liệu trong PHP bạn cần trích xuất các dữ liệu từ nội dung nào đó, trong hướng dẫn này mình sẽ hướng dẫn các bạn trích xuất dữ liệu từ nội dung khi có thể xác định các khóa mở đầu và kết thúc nội dung cần trích xuất. Để trích xuất các nội dung như vậy trong PHP bạn có thể làm theo 2 cách dưới đây:

Cách 1: Viết hàm PHP để trích xuất nội dung

Ví dụ

<?php
class ShortcodeExtractor 
{
    /**
     * @var $opening
     */
    private $start = "{";

    /**
     * @var $closing
     */
    private $end = "}";

    public function extract($content, $result=[]) 
    {
        $startPos = strpos($content, $this->start);
        $endPos = strpos($content, $this->end);
        
        $out = "";
        if($startPos > 0 && $endPos > 0) {
            $out = substr($content, $startPos, ($endPos - $startPos) + 1);
            $result[] = $out;
            $latestContent = str_replace($out, "", $content);
            return $this->extract(str_replace($out, "", $content), $result);
        }

        return $result;
    }
}

$content = "Họ và tên {last_name} {first_name}, với email đăng ký là {email}.";
        
$result = (new ShortcodeExtractor)->extract($content);

print_r($result);

Kết quả

Array
(
[0] => {last_name}
[1] => {first_name}
[2] => {email}
)

Cách 2: Dùng hàm preg_match_all() trong PHP để trích xuất nội dung

Để trích xuất nội dung trong PHP một cách đơn giản hơn đó là sử dụng hàm preg_match_all() trong PHP. Mã như ví dụ dưới đây:

Ví dụ

<?php
$content = 'Họ và tên {last_name} {first_name}, với email đăng ký là {email}.';

preg_match_all('/{(.*?)}/s', $content, $match);

print_r($match);

?>

Kết quả:

Array
(
[0] => Array
(
[0] => {last_name}
[1] => {first_name}
[2] => {email}
)

[1] => Array
(
[0] => last_name
[1] => first_name
[2] => email
)

)

Từ kế quả trên bạn có thể có 2 cách sử dụng kết quả.
- Để xuất ra nội dung bao gồm các khóa mở đầu và kết thúc thì bạn dùng như sau:

Ví dụ

print_r($match[0]);


Kết quả:

Array
(
[0] => {last_name}
[1] => {first_name}
[2] => {email}
)


- Nếu chỉ cần nội dung giữa các khóa thì bạn dùng như sau:

Ví dụ

print_r($match[1]);


Kết quả:

Array
(
[0] => last_name
[1] => first_name
[2] => email
)

Hy vọng với bài viết này sẽ giúp các bạn tìm được giải pháp cho các dự án lập trình PHP của mình.

Bài viết này đã giúp ích cho bạn?

Bài viết mới

Advertisements