Skip to content

Instantly share code, notes, and snippets.

@musoftware
Last active November 9, 2016 15:17
Show Gist options
  • Select an option

  • Save musoftware/247480893cc65d0e9a3dc75f380cf161 to your computer and use it in GitHub Desktop.

Select an option

Save musoftware/247480893cc65d0e9a3dc75f380cf161 to your computer and use it in GitHub Desktop.
Fix combined RTL and LTR Words in HTML,PHP
<bdi>This is Egypt</bdi>
<bdi>هي Egypt</bdi>
<bdi>هي مصر</bdi>
<?php
function is_rtl ($char) {
$uni_RE_PATTERN_ARABIC = "/(
\xD8[\x80-\x83\x8B\x8D\x9B\x9E\x9F\xA1-\xBA] # AL
| \xD9[\x80-\x8A\xAD-\xAF\xB1-\xBF] # AL
| \xDA[\x80-\xBF] # AL
| \xDB[\x80-\x95\x9D\xA5\xA6\xAE\xAF\xBA-\xBF] # AL
| \xDC[\x80-\x8D\x90\x92-\xAF] # AL
| \xDD[\x8D-\xAD] # AL
| \xDE[\x80-\xA5\xB1] # AL
| \xEF\xAD[\x90-\xBF] # AL
| \xEF\xAE[\x80-\xB1] # AL
| \xEF\xAF[\x93-\xBF] # AL
| \xEF[\xB0-\xB3][\x80-\xBF] # AL
| \xEF\xB4[\x80-\xBD] # AL
| \xEF\xB5[\x90-\xBF] # AL
| \xEF\xB6[\x80-\x8F\x92-\xBF] # AL
| \xEF\xB7[\x80-\x87\xB0-\xBC] # AL
| \xEF\xB9[\xB0-\xB4\xB6-\xBF] # AL
| \xEF\xBA[\x80-\xBF] # AL
| \xEF\xBB[\x80-\xBC] # AL
| \xD9[\xA0-\xA9\xAB\xAC] # AN
)/x";
$uni_RE_PATTERN_RTL = "/(
\xD6\xBE # R
| \xD7[\x80\x83\x86\x90-\xAA\xB0-\xB4] # R
| \xDF[\x80-\xAA\xB4\xB5\xBA] # R
| \xE2\x80\x8F # R
| \xEF\xAC[\x9D\x9F\xA0-\xA8\xAA-\xB6\xB8-\xBC\xBE] # R
| \xEF\xAD[\x80\x81\x83\x84\x86-\x8F] # R
| \xF0\x90\xA0[\x80-\x85\x88\x8A-\xB5\xB7\xB8\xBC\xBF] # R
| \xF0\x90\xA4[\x80-\x99] # R
| \xF0\x90\xA8[\x80\x90-\x93\x95-\x97\x99-\xB3] # R
| \xF0\x90\xA9[\x80-\x87\x90-\x98] # R
| \xE2\x80[\xAB\xAE] # RLE & RLO
)/x";
if (preg_match($uni_RE_PATTERN_ARABIC, $char) OR preg_match($uni_RE_PATTERN_RTL, $char)) return true; else return false;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment