Приходит на вход строка, из нее нужно выбрать слова, где есть кириллица и латиница в одном слове, так же в слове могут быть все символы, я хочу подсветить другим цветом в этих словах буквы которые принадлежат латинице или кириллице, когда символ один, все срабатывает хорошо, когда 2 и более то второй символ не подсвечивает, помогите пожалуйста, как это реализовать?
echo "<table border='1' style='border-collapse:collapse;'>";
echo '<tr>';
echo "<td style='padding:10px;'>Модель</td>";
$count = 0;
echo "<td style='padding:10px;'>Код</td>";
echo '</tr>';
foreach ($arrAllItems as $arrAllItem){
$i++;
if ($i > 300) {
break;
}
// $words = preg_split('/(^[а-яА-ЯёЁ]+[\-\/.,+*()0-9]*[a-zA-Z]+|[a-zA-Z]+[\-\/.,+*()0-9]*[а-яА-ЯёЁ]+)/ui', $arrAllItem['Model'],-1,PREG_SPLIT_NO_EMPTY);
$wordsVar = preg_match_all('/[а-яА-ЯёЁ]+[\-\/.,+*()0-9]*[a-zA-Z]+|[a-zA-Z]+[\-\/.,+*()0-9]*[а-яА-ЯёЁ]+/ui', $arrAllItem['Model'], $words);
$new_array = array_values(array_diff($words, array('')));
foreach ($words[0] as $key => $word) {
// if (!preg_match_all("/^(?:\p{Cyrillic}+|\p{Latin}+)$/ui", $word, $out)) {
$arrNonCorrect = array();
if (preg_match_all("/(?:[а-яА-ЯёЁ]+\W)/ui", $word, $out)) {
if (!empty($arrAllItem['Model'])) {
$str = $arrAllItem['Model'];
$res = preg_match_all('/(?:[a-zA-Z]+)/ui', $word, $matches);
array_push($arrNonCorrect, array('alltext'=>$arrAllItem['Model'], 'model'=>array('eng'=>$matches[0], 'rus'=>$out[0]), 'CODE'=>$arrAllItem['CODE']));
foreach ($arrNonCorrect as $item){
echo '<tr>';
echo "<td style='padding:10px;'>";
// $str = $arrAllItem['Model'];
foreach ($item['model']['eng'] as $value) {
// echo "<span style='color: red; font-weight:bold;'>".$value."<br></span>";
$str = preg_replace('/(?:'.$value.')/ius','<b style="color: blue;">'.$value.'</b>', $str, 1);
}
echo $str;
echo '</td>';
echo "<td style='padding:10px;'>{$item['CODE']}</td>";
echo '</tr>';
}
}
}
}
}
echo '</table>';