2013-09-05 12 views
5

多くの構文ハイライトがありますが、私が見たことのないものは、クエリ文字列の強調表示をサポートしているものです!JavascriptまたはPHPシンタックスのクエリ文字列の強調表示?

私はAPIを文書化する際に使用するものを探しています。また、APIとしては多くのクエリ文字列が含まれています。そう。どのような良いjavascriptやPHP構文のハイライトは、クエリ文字列をサポートしていますか?

私はGoogle code prettifyhighlight.jsprismjsおよびいくつかの他に見てきましたが、それらのどれもこれを強調することができるように思わない:

1色にすべてのキーを強調表示し、すべての値なければならない
/oauth/authorize?client_id=wG2X7q1qz74zdSbgiFkyL5JFOeloQwg2opfrPfaJ&response_type=code&redirect_uri=https%3A%2F%2Fmyapplication.com%2Foauth&scope=account%2Ccompetition%2Cvideos&state=d41d8cd98f00b204e9800998ecf8427e 

&を持つ別に=再び別の色である...何かのように:?「?」私の知る限りのような懸念すべての文字を午前よう enter image description here

+1

ダムド良い質問を。 –

+1

...私は同じことを文書化しなければならず、尋ねることさえ考えなかった...実際、chrome/Firefoxではアドレスバー全体を色分けしないのはなぜですか?類似しているが同じリクエストではない:https://bug184074.bugzilla.mozilla.org/attachment.cgi?id=143118 –

答えて

1

、「&」と「=」ナムに交換する必要があります適切なURLのes /値。これにより、解析が容易になります。

、なぜ自分で何かを発明していない:

function parseQuery(query){ 
    parsed = query.split('?'); 
    if (parsed.length > 1) { 
     parsed[1] = parsed[1].split('&'); 
     for(i in parsed[1]) { 
      parsed[1][i] = parsed[1][i].split('='); 
     } 
    } 
    retStr = '<span class="path">' + parsed[0] + '</span>'; 
    if (parsed.length > 1) { 
     retStr += '<span class="qm">?</span>'; 
     first = true; 
     for(i in parsed[1]) { 
      if (first) { 
       first = false; 
      } else { 
       retStr += '<span class="amp">&</span>'; 
      } 
      retStr += '<span class="name">' + parsed[1][i][0] + '</span>'; 
      if (parsed[1][i].length > 1) { 
       retStr += '<span class="eq">=</span>' + 
       '<span class="value">' + parsed[1][i][1] + '</span>'; 
      } 
      if (parsed[1][i].length > 2) { 
       for (var j = 2; j < parsed[1][i].length; j++) { 
         retStr += '<span class="eq">=</span>'; 
         retStr += '<span class="error">' + parsed[1][i][j] + '</span>'; 
       } 
      } 
     } 
    } 
    if (parsed.length > 2) { 
     for (var i = 2; i < parsed.length; i++) { 
       retStr += '<span class="qm">?</span>'; 
       retStr += '<span class="error">' + parsed[i] + '</span>'; 
     } 
    } 
    return retStr; 
} 

http://jsfiddle.net/YqrpV/1/

+0

書式設定の理由で複数の行で強調表示を行うことをサポートするにはどうすればよいだろうか? http://jsfiddle.net/YqrpV/2/ – Hailwood

+1

などでは、取得時にb.innerHTMLをb.textContentに変更しました。現在は正常に動作しているようです。 parseQueryは文字列で動作し、innerHTMLは渡されていました。& http://jsfiddle.net/YqrpV/3/ – fsw

+0

2つの素晴らしい;私はinnerTextを試してみましたが、動作していなかったのはtextContentについて知りませんでした! – Hailwood

関連する問題