<?php
// all keys must be lowercase
$keywords_external_path = array(
"business analyst là gì" => "business-analyst/",
"tài liệu cho business analyst" => "tai-lieu-cho-business-analyst/",
"product manager là gì" => "product-manager-la-gi/",
"công việc của product manager" => "product-manager-phai-biet-dat-cau-hoi/",
"QA là gì" => "qc-la-gi-qa-la-gi/",
"QC là gì" => "qc-la-gi-qa-la-gi/",
"Kiểm thử phần mềm là gì" => "kiem-thu-phan-mem-ai-lam-chang-duoc/",
"Automation QA là gì" => "3-loi-khuyen-giup-ban-nang-cap-su-nghiep-qa/",
"Tester là gì" => "tester-thanh-cong/",
"kỹ năng của Tester giỏi" => "tester-thanh-cong/",
"công việc QA" => "qa-gioi/",
"Technical Architect là gì" => "how-to-become-ta/",
);
//change the keys to lowercase (support multibyte characters)
mb_internal_encoding("UTF-8");
$keywords_external_path = array_combine(array_map('mb_strtolower', array_keys($keywords_external_path)), $keywords_external_path);
$data = array(
'post_content' => '"business analyst là gì" => "business-analyst/",
"tài liệu cho business analyst" => "tai-lieu-cho-business-analyst/",
"product manager là gì" => "product-manager-la-gi/",
"công việc của product manager" => "product-manager-phai-biet-dat-cau-hoi/",
"QA là gì" => "qc-la-gi-qa-la-gi/",
"QC là gì" => "qc-la-gi-qa-la-gi/",
"Kiểm thử phần mềm là gì" => "kiem-thu-phan-mem-ai-lam-chang-duoc/",
"Automation QA là gì" => "3-loi-khuyen-giup-ban-nang-cap-su-nghiep-qa/",
"Tester là gì" => "tester-thanh-cong/",
"kỹ năng của Tester giỏi" => "tester-thanh-cong/",
"công việc QA" => "qa-gioi/",
"Technical Architect là gì" => "how-to-become-ta/"'
);
$base = 'http://domain.com/'; // only if this is useful
$keywords_external = array_keys($keywords_external_path);
rsort($keywords_external);
// to quickly discards useless position (if you have many keywords): you can also do the same with the second letter
$keywords_first_letter = implode('', array_unique(array_reduce($keywords_external, function ($c, $i) { $c[] = mb_substr($i, 0, 1); return $c; }, [])));
$pattern = '~\b(?=['. $keywords_first_letter . '])(?:' . implode('|', $keywords_external) . ')\b~iu';
$result = preg_replace_callback($pattern, function ($m) use ($keywords_external_path, $base) {
return '<a href="' . $base . $keywords_external_path[mb_strtolower($m[0])] . '">' . $m[0] . '</a>';
}, $data['post_content']);
echo $result;