Как разбить языковую строку (WordPress qTranslate) в JavaScript - PullRequest
1 голос
/ 29 июня 2011

У меня есть эта строка 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

Если кто-нибудь знает хороший способ сделать это, возможно, с регулярным выражением,будет фантастическим !!!

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

Я не думаю, что нужно много объяснений;Вы просто добавляете lang в шаблон для своего регулярного выражения и получаете первый обратный рефлекс (часть (.*?)).Я не верю, что какая-либо часть вашей предоставленной строки представляет собой зарезервированный символ .Обратите внимание, что вы можете включить обработку ошибок, если совпадение не найдено, но я оставлю это для 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"
0 голосов
/ 27 ноября 2012

Лучше иметь язык, установленный 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<!--:-->");
...