在wordpress LaTeX短代码中用变量替换字符串

时间:2017-07-11 15:20:31

标签: php wordpress latex str-replace shortcode

我正在构建一个短代码,用一些预先保存的变量替换[LaTex]短代码中的一些文本。

短代码输入为:

[dynamic_latex][latex s=3]Q1A^{2}+5=Q1B[/latex][/dynamic_latex]

其中Q1A和Q1B应替换为存储的用户元。

function latex_find_repalce($atts, $content, $tag) {
    global $random_coefficient_A;
    global $random_coefficient_B;
    $new_LaTeX = str_replace('$a', $random_coefficient_A, $content);
    $new_LaTeX = str_replace('$b', $random_coefficient_B, $new_LaTeX);

    $keys = ['Q1A', 'Q1B', 'Q1C', 'Q1D', 'Q1E', 'Q1F', 'Q1G', 'Q2A', 'Q2B', 'Q2C', 'Q2D', 'Q2E', 'Q2F', 'Q2G', 'Q3A', 'Q3B', 'Q3C', 'Q3D', 'Q3E', 'Q3F', 'Q3G']; //Add as many as needed

    foreach($keys as $key) {
        $question_key = "key_{$key}"; //The key for the stored number 
        $replace_meta = get_user_meta( $user_id, $question_key, true );
        $new_LaTeX = str_replace($key, $replace_meta, $new_LaTeX);

    }//foreach

return '<span>' . do_shortcode($new_LaTeX) . '</span>';

}
add_shortcode('dynamic_latex', 'latex_find_repalce');

它似乎删除了有问题的键,但不是替换任何东西而是将它留空。如何用它的存储变量正确替换密钥(Q1A)?还是我错过了别的什么?谢谢!

1 个答案:

答案 0 :(得分:0)

$ user_id未在函数中定义。

[^a-z]*[a-z]

感谢您的帮助!我已经打了好几个小时了