декодировать hex JS в Drupal - PullRequest
       5

декодировать hex JS в Drupal

1 голос
/ 14 января 2011

Я знаю, что упускаю что-то простое, но не могу понять, поэтому я спрошу экспертов.

В Drupal через Jquery, hook_menu и ajax я получаю следующую строку:

\x3cform action=\"/comment/reply/1360\"  accept-charset=\"UTF-8\" method=\"post\" id=\"comment-form\" class=\"ajax-form\"\x3e\n\x3cdiv\x3e\x3cdiv class=\"form-item\"\x3e\n \x3clabel\x3eYour name: \x3c/label\x3e\n \x3ca href=\"/users/testuser1\" title=\"View user profile.\"\x3etestuser1\x3c/a\x3e\n\x3c/div\x3e\n\x3cdiv class=\"form-item\" id=\"edit-comment-wrapper\"\x3e\n \x3clabel for=\"edit-comment\"\x3eComment: \x3cspan class=\"form-required\" title=\"This field is required.\"\x3e*\x3c/span\x3e\x3c/label\x3e\n \x3ctextarea cols=\"60\" rows=\"15\" name=\"comment\" id=\"edit-comment\"  class=\"form-textarea required\"\x3e\x3c/textarea\x3e\n \x3cdiv class=\"description\"\x3eComments are limited to a maximum of \x3cem\x3e200\x3c/em\x3e characters.\x3c/div\x3e\n\x3c/div\x3e\n\x3cul class=\"tips\"\x3e\x3cli\x3eWeb page addresses and e-mail addresses turn into links automatically.\x3c/li\x3e\x3cli\x3eAllowed HTML tags: \x26lt;a\x26gt; \x26lt;em\x26gt; \x26lt;strong\x26gt; \x26lt;cite\x26gt; \x26lt;code\x26gt; \x26lt;ul\x26gt; \x26lt;ol\x26gt; \x26lt;li\x26gt; \x26lt;dl\x26gt; \x26lt;dt\x26gt; \x26lt;dd\x26gt;\x3c/li\x3e\x3cli\x3eLines and paragraphs break automatically.\x3c/li\x3e\x3c/ul\x3e\x3cp\x3e\x3ca href=\"/filter/tips\"\x3eMore information about formatting options\x3c/a\x3e\x3c/p\x3e\x3cinput type=\"hidden\" name=\"form_build_id\" id=\"form-0c4051b953791d21147f76e11c2ab7c4\" value=\"form-0c4051b953791d21147f76e11c2ab7c4\"  /\x3e\n\x3cinput type=\"hidden\" name=\"form_token\" id=\"edit-form-token\" value=\"8dd5324de6e086d9412e9407eb7aba1e\"  /\x3e\n\x3cinput type=\"hidden\" name=\"form_id\" id=\"edit-comment-form\" value=\"comment_form\"  /\x3e\n\x3cinput type=\"submit\" name=\"op\" id=\"edit-submit\" value=\"COMMENT\"  class=\"form-submit ajax-trigger\" /\x3e\n\x3cinput type=\"submit\" name=\"op\" id=\"edit-preview\" value=\"Preview\"  class=\"form-submit ajax-trigger\" /\x3e\n\n\x3c/div\x3e\x3c/form\x3e\n</div>

и мне нужно, чтобы это закончилось так, как написано в div:

<form action="/comment/reply/1360"  accept-charset="UTF-8" method="post" id="comment-form" class="ajax-form"> <div><div class="form-item">  <label>Your name: </label>  <a href="/users/testuser1" title="View user profile.">testuser1</a> </div> <div class="form-item" id="edit-comment-wrapper">  <label for="edit-comment">Comment: <span class="form-required" title="This field is required.">*</span></label>  <textarea cols="60" rows="15" name="comment" id="edit-comment"  class="form-textarea required"></textarea>  <div class="description">Comments are limited to a maximum of <em>200</em> characters.</div> </div> <ul class="tips"><li>Web page addresses and e-mail addresses turn into links automatically.</li><li>Allowed HTML tags: &lt;a&gt; &lt;em&gt; &lt;strong&gt; &lt;cite&gt; &lt;code&gt; &lt;ul&gt; &lt;ol&gt; &lt;li&gt; &lt;dl&gt; &lt;dt&gt; &lt;dd&gt;</li><li>Lines and paragraphs break automatically.</li></ul><p><a href="/filter/tips">More information about formatting options</a></p><input type="hidden" name="form_build_id" id="form-0c4051b953791d21147f76e11c2ab7c4" value="form-0c4051b953791d21147f76e11c2ab7c4"  /> <input type="hidden" name="form_token" id="edit-form-token" value="8dd5324de6e086d9412e9407eb7aba1e"  /> <input type="hidden" name="form_id" id="edit-comment-form" value="comment_form"  /> <input type="submit" name="op" id="edit-submit" value="COMMENT"  class="form-submit ajax-trigger" /> <input type="submit" name="op" id="edit-preview" value="Preview"  class="form-submit ajax-trigger" />  </div></form> 

поэтому я написал это:

function unjsEncode(string){

var leftCaret = /\x3c/ig;
var rightCaret = /\x3e/ig;
var lineBreak = /\n/ig;
var escQuote = /\"/ig;

var newstring = string.replace(leftCaret, "<" );
    newstring = newstring.replace(rightCaret, ">");
    newstring = newstring.replace(lineBreak, " ");
    newstring = newstring.replace(escQuote, '"');
    return newstring;

}

Но это не работает. В конце долгого пути выясняется, как писать динамические формы в Drupal, и я чувствую себя идиотом, который не может понять простую подпрограмму регулярного выражения в js, но через 8 часов я здесь. Буду очень признателен за любую помощь в обучении меня ловить рыбу!

Ответы [ 2 ]

0 голосов
/ 25 января 2011

В зависимости от вашего стиля программирования, вы можете также добавить следующую строку для обработки одинарных кавычек:

   newstring = newstring.replace(/\\'/g,"'");
0 голосов
/ 14 января 2011

Вот функция:

function unjsEncode(string){
            var newstring = string.replace(/\\x/g,'%');
            newstring = newstring.replace(/\\n/g,'');
            newstring = newstring.replace(/\\"/g,'"');
            newstring = decodeURIComponent(newstring);
            return newstring;
    }

благодаря http://bytes.com/topic/javascript/answers/169509-how-decrypt-garbled-javascript И я надеюсь, что это поможет кому-то еще!

...