如何匹配和替换与波斯语单词交错的英语单词?
波斯语字母不是拉丁语。问题是英语单词与波斯语单词交错(以从右到左书写)没有正确显示,除非它们被span
包围,从而设置从左到右的方向。
因此,我需要用<span dir="ltr">word</span>
替换英语单词。
我认为以下内容可以匹配拉丁文字。它也应包含一些符号(#
,!
,$
,...)。另外,请提供替换
^[a-zA-Z]+( [a-zA-Z]+)*$
举个例子,这个文字:
من قصد دارم این English# را عوض کنم به
应替换为:
من قصد دارم این <span dir="ltr">English#</span> را عوض کنم به
答案 0 :(得分:8)
这解决了这个问题:
$pattern = "/([a-zA-Z]+[a-zA-Z?><;,{}[\]\-_+=!@#$%\^*|']*)/";
$replacement = '<span dir="ltr">${1}</span>';
$subject = preg_replace($pattern, $replacement, $subject);
它匹配英文字母加上一些额外字符,但请注意,由于Unicode字符的HTML编码以&
开头,因此不应在额外字符中包含&
。