Exercise: Fix subscript is not working in the answers options inside quiz - refs BT#19326

pull/4056/head
Christian 4 years ago
parent c2e44d7ff5
commit def3a2eee1
  1. 35
      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('/<sup>([0-9]+)<\/sup>/is', "&sub$1;", $value);
// It replaces subscript numbers
$value = preg_replace_callback(
"/<sub>([0-9]+)<\/sub>/is",
function($m) {
$precode = '&#832';
$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.

Loading…
Cancel
Save