5

如何匹配和替换与波斯语单词交错的英语单词?

波斯字母不是拉丁字母。问题是与波斯语单词(以从右到左书写)交错的英语单词无法正确显示,除非它们被span设置为从左到右方向的 a 包围。

因此,我需要将英文单词替换为<span dir="ltr">word</span>.

我认为以下可以匹配拉丁词。它也应该包含一些符号(#, !, $, ...)。另外,请提供替换表达式

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

举个例子,这段文字:

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

应替换为:

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

1 回答 1

8

这解决了问题:

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

它匹配英文字母加上一些额外的字符,但请注意,您不应该&在额外的字符中包含,因为 Unicode 字符的 HTML 编码以&.

于 2014-01-21T19:33:31.323 回答