1

私はこのJavaScript文字列を持っています:

"<!--:fr-->Photos<!--:--><!--:en-->Pictures<!--:-->"

そして、それを解析して、すべての「言語」を個別の文字列で取得する必要があります。理想は、次のような機能を持つことです。

function getText(text, lang){
    // get and return the string of the language "lang" inside the multilang string "text"
}

私はそのように呼び出すことができます:

var frenchText = getText("<!--:fr-->Photos<!--:--><!--:en-->Pictures<!--:-->","fr");
// and would return:
// frenchText = Photos

誰かがそれを行う良い方法を知っているなら、おそらく正規表現でそれは素晴らしいでしょう!!!

4

3 に答える 3

7

多くの説明は必要ないと思います。正規表現のテンプレートに追加langして、最初の backref ((.*?)部分) を取得するだけです。提供された文字列のどの部分も予約文字を構成しているとは思いません。一致が見つからない場合に備えて、いくつかのエラー処理を含めることができることに注意してください。ただし、それは OP に任せます。

function getText(text, lang) {
  // Builds regex based on supplied language
  var re = new RegExp("<!--:" + lang + "-->(.*?)<!--:-->");

  // Returns first backreference
  return text.match(re)[1];
}
getText("<!--:fr-->Photos<!--:--><!--:en-->Pictures<!--:-->", "fr");
// returns "Photos"
于 2011-06-29T12:20:58.150 に答える
0

PHP で言語を設定した方がよい:

var lang = '<?php echo qtrans_getLanguage(); ?>';
function getText(text) {
  // Builds regex based on supplied language
  var re = new RegExp("<!--:" + lang + "-->(.*?)<!--:-->");

  // Returns first backreference
  return text.match(re)[1];
}
getText("<!--:fr-->Photos<!--:--><!--:en-->Pictures<!--:-->");
于 2012-11-27T19:25:07.437 に答える