douju4594
2017-03-28 13:04
浏览 112
已采纳

将unicode php变量传递给javascript

I trying to pass wordpress posts title and excerpts (which are persian) to javascript. here is code in .php script file:

function change(){
            document.getElementById("link").innerHTML = '<a href="$links[2]">$titles[2]</a>';
            document.getElementById("exer").innerHTML = '$excerpts[2]';
            document.getElementById("img").innerHTML = '$imgs[2]';
}

There is no problem with titles but when I add excerpts, it makes error in javasripts. The generated javascript tag in browser is:

        function change(){


            document.getElementById("link").innerHTML = '<a href="http://sirsaleh.com/2016/09/21/semi-private-idea/">یک ایده &#8211; حریم نیمه‌خصوصی</a>';
            document.getElementById("exer").innerHTML = '<p>چیزی که می‌خوام بگم با حریم نیمه‌خصوصی‌های تعریف شده در جاهای دیگه، اشتباه گرفته نشه. مطلبی که پیش روی شماست کاملا من‌درآوردی است.  ما همیشه می‌گیم یه چیز خصوصیه و یه چیز عمومیه. داشتم به این فکر می‌کردم، بد نیست با همه چیزای عمومی مثل هم‌رفتار نکنیم! به‌نظرم یه وقتایی به نظرم لازمه یه &hellip; <a href="http://sirsaleh.com/2016/09/21/semi-private-idea/" class="more-link">ادامه خواندن<span class="screen-reader-text"> &#8220;یک ایده &#8211; حریم نیمه‌خصوصی&#8221;</span></a></p>
';
                    document.getElementById("img").innerHTML = '';
    </script>

here is the error shown in chrome-browser (it refers to line I passed $excerpts to javascript):

Uncaught SyntaxError: Invalid or unexpected token

When I use json_encode in php to convert varible for javascript, the errors vanishes, But all of the excerpts variable become empty string "".

I tried some regex solutions to deleted unwanted non-unicode characters but it has same problem also.

Any help will be appreciated.

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dqn8235 2017-03-28 16:46
    已采纳

    OH! I find out something in the output of the_excerpt() function of wordpress. It contains a newline character in the the_excerpt() output. so thanks to this answer, I used regex like this:

    $excerpts = preg_replace( "/|
    /", "", $excerpts );
    

    and problem solved!

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题