私はjQueryと非常に単純なスクリプトを使用して、引用符、アポストロフィ、および二重ダッシュをそれらの「スマート」な対応物に置き換えています。
function smarten(a) {
a = a.replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018"); // opening singles
a = a.replace(/'/g, "\u2019"); // closing singles & apostrophes
a = a.replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201c"); // opening doubles
a = a.replace(/"/g, "\u201d"); // closing doubles
a = a.replace(/--/g, "\u2014"); // em-dashes
return a
};
私はこれをTwitterJSへのコールバックとして使用しています。TwitterJSはリンクを解析し、次のようなブロックを生成します。
<ul> <li>Here's a link! <a href="http://www.foobar.com">http://www.foobar.com</a></li> </ul>
問題は、私がこれを行うと、次のことです。
$('#tweet li').html(smarten($('#tweet li').html()))
それはリンクを破壊します、そして私がこれをするならば:
$('#tweet li').html(smarten($('#tweet li').text()))
それらを完全に破棄します。<a>
TwitterJSのリンク解析に干渉することなく、テキストのみを取得して(必要に応じてタグからも)「スマート」にしてから元に戻す、スマートで堅牢な方法はありますか?