FUNCTION CODE_PAGE
PARAMETER TMP_NEW
* جایگزینی لا تک کارکتری با لا دو کارکتری
TMP_NEW = STRTRAN(TMP_NEW, chr(242), chr(145) + chr(243))
&&ramz1 = '0123456789،ـ؟آئءااببپپتتثثججچ ححخخدذرزژسسششصصضضطؤةظععع غغغغففققککگگل$لممننوهههیی ی'
&&ramz2 = '€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’ ”•–—ک™ڑ›œں ،¢£¤¥¦§¨©ھ«¬®¯¾ئàلâمنهوç èéêëىیîïًٌٍَôُِ÷ّùْûü؟ '
ramz1 = '0123456789،ـ؟آئءااببپپتتثثججچ ححخخدذرزژسسششصصضضطؤةظععع غغغغففققککگگللممننوهههیی '
ramz2 = '€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’ ”•–—ک™ڑ›œں ،¢£¤¥¦§¨©ھ«¬®¯¾ئàلâمنهوç èéêëىیîïًٌَôُِ÷ّùْûü؟'
* استفاده از کارکترهای بزرگ نوشته شده برای تشخیص پایان کلمه
ST3 = "üôل§©ِی’ڑٌé–ùï« ù”ëœهâوکڈئ"
FOR ZZZ = 1 TO LEN(ST3)
TMP_NEW = STRT(TMP_NEW, SUBSTR(ST3,ZZZ,1), ' ' + SUBSTR(ST3,ZZZ,1))
ENDFOR
* گذاشتن فاصله در قبل و بعد از کلمات انگلیسی موجود در متن
EnWord = ''
FOR ZZZ = 1 TO LEN(TMP_NEW)
HARF = SUBSTR(TMP_NEW,ZZZ,1)
IF between(asc(HARF),97,122) OR between(asc(HARF),65,90)
EnWord = EnWord + HARF
ELSE
IF !EMPTY(EnWord)
TMP_NEW = STRTRAN(TMP_NEW, EnWord , ' ' + EnWord + ' ')
EnWord = ''
ENDIF
ENDIF
ENDFOR
R2LChar = ''
L2RChar = ''
OnAdad = .T.
FOR ZZZ = 1 TO LEN(TMP_NEW)
HARF = SUBSTR(TMP_NEW,ZZZ,1)
IF INLIST(HARF, '€', 'پ', '‚', 'ƒ', '„', '…', '†', '‡', 'ˆ', '‰', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '/', '-', '_');
OR between(asc(HARF),97,122) OR between(asc(HARF),65,90)
L2RChar = HARF + L2RChar
R2LChar = R2LChar + HARF
ELSE
IF !EMPTY(L2RChar)
*SH = LEN(L2RChar)
*IF SH > 1
* TMP_NEW = STUFF(TMP_NEW, ZZZ - SH, SH, L2RChar)
*ENDIF
TMP_NEW = STRTRAN(TMP_NEW, R2LChar , L2RChar)
L2RChar = ''
R2LChar = ''
ENDIF
ENDIF
ENDFOR
AD = .F.
IF !EMPTY(L2RChar)
*SH = LEN(L2RChar)
*TMP_NEW = STUFF(TMP_NEW, ZZZ - SH, SH, L2RChar)
TMP_NEW = STRTRAN(TMP_NEW, R2LChar , L2RChar)
AD = .T.
ENDIF
DO WHILE (' ' $ TMP_NEW)
TMP_NEW = STRT(TMP_NEW, ' ', ' ')
ENDDO
tmp_new = Chrtran(tmp_new, ramz2, ramz1)
&&TMP_NEW = STRT(TMP_NEW,'$','ال')
&&TMP_NEW = Chrtran(TMP_NEW, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')
&&TMP_NEW = Chrtran(TMP_NEW, 'zyxwvutsrqponmlkjihgfedcba', 'ZYXWVUTSRQPONMLKJIHGFEDCBA')
*TMP_NEW = Chrtran(TMP_NEW, '}{][', '')
*TMP_NEW = Chrtran(TMP_NEW, 'BADC', ')(][')
*TMP_NEW = Chrtran(TMP_NEW, ')(][', 'ABCD')
*TMP_NEW = Chrtran(TMP_NEW, ')(][', '')
&&IF INLIST(left(ALLTRIM(tmp_new),1),'(','[',')',']')
&& tmp_new = 'ْ' + tmp_new
&&ENDIF
TMP_NEW = FSIS(TMP_NEW)
RETURN TMP_NEW
************************
Function fsis
Parameter fsis1
fsis2 = ''
For igh = Len(fsis1) TO 1 STEP -1
fsis2 = fsis2 + Substr(fsis1, igh, 1)
Endfor
fsis2 = alltrim(fsis2)
Return fsis2
*