Я заметил проблему с порядком отображения заголовков статей, содержащих как арабские, так и английские слова, в результатах поиска Google. В настоящее время тенденция показывает сначала английские слова, а затем арабские.
В качестве примера рассмотрим следующий заголовок:
Оригинальное название:
Использование DigiSpark OverMaster в исполнении Rubber Ducky
Я хочу, чтобы заголовок отображался в правильном порядке, вот так:
Желаемое отображение:
Rubber Ducky в версии DigiSpark OverMaster
Я ищу решение на основе PHP-кода, которое могло бы решить эту проблему и обеспечить постоянное отображение заголовков в правильном направлении. Обратите внимание, что я хочу реализовать это программно через PHP, а не полагаться на стили CSS RTL (справа налево).
Я хочу отображать вот так:

Я пробовал сделать это с помощью многих функций. Я думаю, что это очень медленно, и это не то, что мне нужно, потому что это неправильно отображает английские буквы.
Это пример того, чего я достиг, и я не хочу ничего подобного:
functionverseTitle($title) { $words = взорваться(' ', $title); $reversedWords = array_reverse($words); $reversedTitle = implode(' ', $reversedWords); вернуть $reversedTitle; } функция getLastArabicWords($inputString) { $arabicRegex = '/[\x{0600}-\x{06FF}\s]+$/u'; preg_match($arabicRegex, $inputString, $match); вернуть $соответствие? обрезка ($ match [0]): ноль; } функция содержитMultipleEnglishWords($arabicWord) { $englishWordPattern = '/\b[a-zA-Z]+\b/'; $соответствия = []; preg_match_all($englishWordPattern, $arabicWord, $matches); return count($matches[0]) > 1; } функция обнаружения английских слов ($ arabicString) { preg_match_all('/\b[a-zA-Z]+\b/u', $arabicString, $matches); вернуть $matches[0]; } функция mix_title_dir($title) { пытаться { $scan_tile = containsMultipleEnglishWords($title); $outputTitle =verseTitle($title); $firstArabicWords = getLastArabicWords($outputTitle); $reverse_first_words =verseTitle($firstArabicWords); если ($ scan_tile) { $theMixTitle = str_replace($firstArabicWords,$reverse_first_words, $outputTitle); вернуть $theMixTitle; }еще{ $englishWords = implode(', ',DetectEnglishWords($title)); $wordsToReplace = массив( $englishWords => "", $reverse_first_words => "", ); $solid_title = str_replace(array_keys($wordsToReplace), array_values($wordsToReplace), $title) ." ". $английские слова. " ". $reverse_first_words; return Trim($solid_title) ; } } catch (Исключение $e) { вернуть $заголовок; } } $text = "Отправить DigiSpark OverMaster"; echo mix_title_dir($title);
Вывод:
Ducky Rubber в OverMaster DigiSpark с поддержкой
Вроде неплохо Но появляется английское слово OverMaster DigiSpark нет DigiSpark OverMaster