diff --git a/main/exercise/fill_blanks.class.php b/main/exercise/fill_blanks.class.php index b71c3a20df..96da612483 100755 --- a/main/exercise/fill_blanks.class.php +++ b/main/exercise/fill_blanks.class.php @@ -543,7 +543,7 @@ class FillBlanks extends Question $resultOptions = ['' => '--']; foreach ($listMenu as $item) { - $resultOptions[sha1($item)] = $item; + $resultOptions[sha1($item)] = self::replaceSpecialCharsForMenuValues($item); } foreach ($resultOptions as $key => $value) { @@ -586,6 +586,39 @@ class FillBlanks extends Question return $result; } + /* + * It searchs and replaces special chars to show in menu values + * + * @param string $value The value to parse + * + * @return string + */ + public static function replaceSpecialCharsForMenuValues($value) { + + // It replaces supscript numbers + $value = preg_replace('/([0-9]+)<\/sup>/is', "&sub$1;", $value); + + // It replaces subscript numbers + $value = preg_replace_callback( + "/([0-9]+)<\/sub>/is", + function($m) { + $precode = '̀'; + $nb = $m[1]; + $code = ''; + if (is_numeric($nb) && strlen($nb) > 1) { + for ($i = 0 ; $i < strlen($nb) ; $i++) { + $code .= $precode.$nb[$i].';'; + } + } else { + $code = $precode.$m[1].';'; + } + return $code; + }, + $value); + + return $value; + } + /** * Return an array with the different choices available * when the answers between bracket show as a menu.