Ahm*_*mad 5 php regex non-english right-to-left
如何匹配和替换与波斯语单词交错的英语单词?
波斯语字母不是拉丁语.问题是英语单词与波斯语单词交错(以从右到左书写)没有正确显示,除非它们被span设置为从左到右的方向包围.
因此,我需要用一个替换英语单词<span dir="ltr">word</span>.
我认为以下内容可以匹配拉丁文字.它应该包含一些符号太(#,!,$,...).另外,请提供替换表达
^[a-zA-Z]+( [a-zA-Z]+)*$
Run Code Online (Sandbox Code Playgroud)
举个例子,这个文字:
?? ??? ???? ??? English# ?? ??? ??? ??
Run Code Online (Sandbox Code Playgroud)
应该替换为:
?? ??? ???? ??? <span dir="ltr">English#</span> ?? ??? ??? ??
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题:
$pattern = "/([a-zA-Z]+[a-zA-Z?><;,{}[\]\-_+=!@#$%\^*|']*)/";
$replacement = '<span dir="ltr">${1}</span>';
$subject = preg_replace($pattern, $replacement, $subject);
Run Code Online (Sandbox Code Playgroud)
它匹配英文字母加上一些额外的字符,但请注意,&由于Unicode字符的HTML编码开头,因此不应包含额外的字符&.