2014-01-21 4 views
5

페르시아어 단어로 삽입 된 영어 단어를 어떻게 일치시키고 바꿀 수 있습니까?비영어권 (UTF-8) 단어로 인터리브 된 영어 단어를 바꾸는 방법

페르시아 알파벳은 라틴어가 아닙니다. 문제는 왼쪽에서 오른쪽 방향을 설정하는 span으로 둘러싸여 있지 않으면 페르시아어 단어 (오른쪽에서 왼쪽으로 쓰여 있음)가 삽입 된 영어 단어가 올바르게 표시되지 않는다는 것입니다.

따라서 영어 단어를 <span dir="ltr">word</span>으로 바꿔야합니다.

다음은 라틴어 단어와 일치 할 수 있다고 생각합니다. 일부 기호도 포함되어야합니다 (#, !, $, ...). 또한, 예를 제공하기 위해

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

을 교체하기위한 식을 제공하십시오,이 텍스트 :

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

가로 대체되어야한다 :

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

답변

8

이 문제를 해결합니다 :

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

영어 알파벳과 몇 가지 추가 문자가 일치하지만 유니 코드 문자의 HTML 인코딩이 &으로 시작하므로 추가 문자에 &을 포함하면 안됩니다.