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ả
(
[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ả:
(
[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ả:
(
[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.