/** * Transform kanji in the input Japanese text into links to the Study area, * and add class for Javascript popup with the Heisig keywords. * * @param string $j_text Japanese text in utf-8 from validated post data. * @return string Japanese text as HTML code. */ protected function transformJapaneseText($j_text) { coreToolkit::loadHelpers('Tag'); $j_text = escape_once(trim($j_text)); // collect associative array of known kanji => kanji, framenum, keyword $kanjis = ReviewsPeer::getKnownKanji($this->getUser()->getUserId(), array('kanji', 'keyword')); $known = array(); foreach ($kanjis as $i => $kanjiData) { $known[$kanjiData['kanji']] = $kanjiData; } // wrap known kanji in text with links to Study area and hooks for javascript tooltip foreach ($known as $kanji => $info) { $url = '/study/?search=' . $info['framenum']; $rep = '<a href="' . $url . '" class="j" title="' . $info['keyword'] . '">' . $kanji . '</a>'; $j_text = str_replace($kanji, $rep, $j_text); } // assumes lines end with \r\n $j_text = preg_replace('/[\\r\\n]+/', '<br/>', $j_text); return $j_text; }