2011-07-15 14 views
0

標準の引用文字"を、より見栄えのある見積もりに置き換えたいウェブページがあります。たとえば、私たちはより良い探して 'カーリー' 引用符を示し、マークアップでより良いものに引用符を置き換えてください

“hello world”

に置き換えられる

"hello world"

を持っています。

2つのHTML特殊文字は、私が苦労している一般的なダブルダッシュではなく、引用ブロックを「開く」と「閉じる」という点でペアです。単に引用符をすべて“に置き換えるのは簡単ですしかし、私はオープン/クローズペアが尊重されるようにしたい。それも、それがあるべき達するかどう

を:あなたはtest "abc" test "abc"のような文字列を持っている場合は

+1

qoutesの前後にスペースがありますか?ほとんどの普通のテキストエディタでは、スペース「“」とスペース「”スペース」を見つけて置き換えることができます。 – Tim

+0

@ティム:私は思ったよりもはるかに賢明ではないようだ - 提案に感謝! – Bojangles

答えて

2

私はここで何かを明らかに不足している可能性がありますが、私は、次の正規表現ソリューションが働くだろうと思います - あなたがPHPを使用していた場合

subject = 'test "abc" test "abc"'; 
result = subject.replace(/"([A-Za-z ]*)"/ig, "“$1”"); 
alert(result); 

は、あなたがPHPでいくつかの類似したコードを書くことができ - (私のPHPスキルがややしかし欠けている!それはテストされていないと変更する必要があるかもしれませんので、以下のコードは、正規表現バディで生成された)

$subject = 'test "abc" test "abc"';  
$result = preg_replace('/"([A-Za-z ]*)"/i', '“$1”', $subject); 

また、あなたはDIにコンテンツを読み込むことができますVその後、DIVの内容を変更するためにJavaScriptを使用してPHPを使用して、ここで仕事をするだろうjQueryののビットだ -

$("#contentdiv").text($("#contentdiv").text().replace(/"([A-Za-z ]*)"/ig, "“$1”")); 

はjQueryのhere上実証jsfiddleあります。

+0

ありがとうございました。これは、HTML文書に戻すために適応可能なのでしょうか?そうすれば、これらの新しい引用符をページに表示できますか? – Bojangles

+0

ページはどのように配信されていますか?静的なHTMLページか、PHPなどでレンダリングされていますか? – ipr101

+0

PHPは残念です。 PHPの出力ストリームを変更する方法がある場合は、大きなパフォーマンスのヒットがないことを前提にして、うれしく思います。 – Bojangles

3

、あなたはそれが開口部またはそれに先行しているどのように多くの"を見て、1をクローズするかどうかを各"をチェックできます“、それ以外の場合は”です。

var str = 'test "abc" test "abc"'; 
var splitted = str.split('"'); 
var result = ''; 
for(var i = 0; i < splitted.length; i++) { 
    result += splitted[i] + (i % 2 == 0 ? '&ldqou;' : '&rdquo;'); 
} 
result = result.substring(0, result.length - 7); // remove last appended &ldquo; 
+0

ありがとう非常にpimvdp。ここで問題となるのは、HTML文書全体で引用符のインスタンスをすべて置き換えるため、タグ内の引用符が置き換えられ、壊れたページが残ることです。 – Bojangles

+0

@ JamWaffles:HTMLマークアップの一部であるかどうかを判断する簡単な方法がないので、難しいです。何らかのHTMLパーサーが必要ですが、もっと複雑になります。 – pimvdb

関連する問題