<?php
define(
'ACCENT_MAP',
[
"A" => "[AАĂǍĄÀÃÁÆÂÅǺĀא]",
"B" => "[BБבÞ]",
"C" => "[CĈĆÇЦצĊČץ]",
"D" => "[DДĎĐדÐ]",
"E" => "[EÈĘÉËÊЕĒĖĚĔЄƏע]",
"F" => "[FФƑ]",
"G" => "[GĞĠĢĜГגҐ]",
"H" => "[HחĦХĤה]",
"I" => "[IIÏÎÍÌĮĬIИĨǏיЇĪІ]",
"J" => "[JЙĴ]",
"K" => "[KĸכĶКך]",
"L" => "[LŁĿЛĻĹĽל]",
"M" => "[MמМם]",
"N" => "[NÑŃНŅןŊנʼnŇ]",
"O" => "[OØÓÒÔÕОŐŎŌǾǑƠ]",
"P" => "[PפףП]",
"Q" => "[Qק]",
"R" => "[RŔŘŖרР]",
"S" => "[SŞŚȘŠСŜס]",
"T" => "[TТȚטŦתŤŢ]",
"U" => "[UÙÛÚŪУŨƯǓŲŬŮŰǕǛǙǗ]",
"V" => "[VВו]",
"Y" => "[YÝЫŶŸ]",
"Z" => "(?:Z|ŹŽŻЗז",
"a" => "[aаăǎąàãáæâåǻāא]",
"b" => "[bбבþ]",
"c" => "[cĉćçцצċčץ]",
"ch" => "(?:ch|ч)",
"d" => "[dдďđדð]",
"e" => "[eèęéëêеēėěĕєəע]",
"f" => "[fфƒ]",
"g" => "[gğġģĝгגґ]",
"h" => "[hחħхĥה]",
"i" => "[iiïîíìįĭıиĩǐיїīі]",
"j" => "[jйĵ]",
"k" => "[kĸכķкך]",
"l" => "[lłŀлļĺľל]",
"m" => "[mמмם]",
"n" => "[nñńнņןŋנʼnň]",
"o" => "[oøóòôõоőŏōǿǒơ]",
"p" => "[pפףп]",
"q" => "[qק]",
"r" => "[rŕřŗרр]",
"s" => "[sşśșšсŝס]",
"t" => "[tтțטŧתťţ]",
"u" => "[uùûúūуũưǔųŭůűǖǜǚǘ]",
"v" => "[vвו]",
"y" => "[yýыŷÿ]",
"z" => "[zźžżзזſ]",
"ae" => "(?:ae|[ÄǼäæǽ])",
"ch" => "(?:ch|[Чч])",
"ij" => "(?:ij|[ijIJ])",
"ja" => "(?:ja|[яЯ])",
"je" => "(?:je|[Ээ])",
"jo" => "(?:jo|[ёЁ])",
"ju" => "(?:ju|[юЮ])",
"oe" => "(?:oe|[œŒöÖ])",
"sch" => "(?:sch|[щЩ])",
"sh" => "(?:sh|[шШ])",
"ss" => "(?:ss|[ß])",
"ue" => "(?:ue|[Ü)",
"zh" => "(?:zh|[Жж])"
]);
function highlightTerm($text, $keyword) {
$regex = implode(
'|',
array_map(
fn($w) => strtr(preg_quote($w), ACCENT_MAP),
explode(" ", $keyword)
)
);
return preg_replace(
"#$regex#ui",
'<span style="background:yellow;">$0</span>',
$text
);
}
echo highlightTerm("Would you like a café, Mister Kàpêk?", "kape caf");
- Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- Would you like a <span style="background:yellow;">caf</span>é, Mister <span style="background:yellow;">Kàpê</span>k?
preferences:
94.09 ms | 407 KiB | 5 Q