Как заменить английские слова, чередующиеся с неанглийскими (UTF-8) словами

Как я могу сопоставить и заменить английские слова, чередующиеся с персидскими словами?

Персидский алфавит не латиница. Проблема в том, что английские слова, чередующиеся с персидскими словами (которые написаны справа налево), не отображаются правильно, если они не окружены span который устанавливает направление слева направо.

Поэтому мне нужно заменить английские слова на <span dir="ltr">word</span>,

Я думаю, что следующее может соответствовать латинским словам. Он также должен содержать некоторые символы (#, !, $…) Также, пожалуйста, предоставьте выражение для замены

^[a-zA-Z]+( [a-zA-Z]+)*$

Чтобы привести пример, этот текст:

من قصد دارم این English# را عوض کنم به

Должен быть заменен на:

من قصد دارم این <span dir="ltr">English#</span> را عوض کنم به

1 ответ

Решение

Это решает проблему:

$pattern = "/([a-zA-Z]+[a-zA-Z?><;,{}[\]\-_+=!@#$%\^*|']*)/";
$replacement = '<span dir="ltr">${1}</span>';
$subject = preg_replace($pattern, $replacement, $subject);

Он соответствует английскому алфавиту и некоторым дополнительным символам, но обратите внимание, что вы не должны включать & в дополнительных символах, так как кодировка HTML символов Unicode начинается с &,

Другие вопросы по тегам