поиск выделите строку с и без символов диакритического алфавита

Существует ли регулярное выражение для соответствия определенной строке со специальными символами и без них? Специальные символы нечувствительны, так сказать.

Например, ключевые слова в базе данных sql = الحمد будут соответствовать после выделения подсветки = الْحَمْدُ

Изменить: я хочу сопоставить конкретные строки с и без специальных / акцентированных символов. Не просто любая строка / символ.

  function mbStringToArray($string)
{
$strlen = mb_strlen($string);
while($strlen)
{
$array[] = mb_substr($string, 0, 1, "UTF-8");
$string = mb_substr($string, 1, $strlen, "UTF-8");
$strlen = mb_strlen($string);
}
return $array;
}

// I had to use this ugly function to remove accents as iconv didn't work properly on my test server.
function stripAccents($stripAccents){
return utf8_encode(strtr(utf8_decode($stripAccents),utf8_decode('ِ', 'ُ', 'ٓ', 'ٰ', 'ْ', 'ٌ', 'ٍ', 'ً', 'ّ', 'َ'),''));
}

$keywords= 'الحمد';

$search = '%' . $keywords . '%';
$stmt = $mysqli->prepare("SELECT * FROM quran WHERE $trans LIKE ?");
$stmt->bind_param('s', $search);
$stmt->execute();
$stmt->store_result();$clientNameNoAccent = stripAccents($clientName);

$clientNameArray = mbStringToArray($clientName);

foreach($clientNameArray as $pos => &$char)
{
$charNA =$clientNameNoAccent[$pos];
if($char != $charNA)
{
$char = "(?:$char|$charNA|$charNA\p{M})";
}
}

$clientSearchPattern = implode($clientNameArray); // c(?:é|e|e\p{M})ra

if($stmt->execute()){
$result = $stmt->get_result();
while($row = $result->fetch_assoc()){
$text = 'الْحَمْدُ لِلَّهِ رَبِّ الْعَالَمِينَ';
$search = preg_replace('/(.*?)(' . $clientSearchPattern . ')(.*?)/iu', '$1<span class="highlight">$2</span>$3', $text);
echo $search;// لِلَّهِ رَبِّ الْعَالَمِينَ<span class="highlight">الْحَمْدُ</span>
}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector