3v4l.org

run code in 300+ PHP versions simultaneously
<?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;

preferences:
24.85 ms | 415 KiB | 5 Q