Как заменить английские слова, чередующиеся с неанглийскими (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 начинается с &
,