【问题标题】:How to replace English words interleaved with non-English (UTF-8) words如何替换与非英语(UTF-8)单词交错的英语单词
【发布时间】:2014-02-10 15:02:49
【问题描述】:

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

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

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

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

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

举个例子,这段文字:

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

应替换为:

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

【问题讨论】:

    标签: php regex right-to-left non-english


    【解决方案1】:

    这样就解决了问题:

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-23
      • 2014-04-04
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多