私の関数は次のとおりです。入力からリンクを抽出することになっています。 (httpなどで始まり、 ""で終わります)。問題は、この関数がうまくいくかどうかをデバッグすることができないことです。私はその理由を調べようとしましたが、それでもまだ分かりません。JS関数がループに詰まった
function linkify(input)
{
if (input === undefined || input == null)
return input;
var tinput = input;
var urlextr = "";
var url = [""];
var num = 0;
//search for "http://" first
while(tinput.match(/http:\/\//gi) != null)
{
console.log("http");
urlextr=tinput.substring(tinput.search("http://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
//search for "https://"
while(tinput.match(/https:\/\//gi) != null)
{
console.log("https");
urlextr=tinput.substring(tinput.search("https://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
//search for "ftp://" (Why not?)
while(tinput.match(/ftp:\/\//gi) != null)
{
console.log("ftp");
urlextr=tinput.substring(tinput.search("ftp://"));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
//search for "www.*" (Must be last!)
while(tinput.match(/www./gi) != null)
{
console.log("www");
urlextr=tinput.substring(tinput.search("www."));
urlextr=urlextr.substring(0,urlextr.search(" "));
url[num] = urlextr;
url[num+1] = urlextr;
num = num + 2;
tinput = tinput.replace(urlextr,"");
}
console.log(url);
return output;
}
そう思わないでしょう。 2ndはhtml文字列を使います。私のためには: "ランダムなメッセージとリンクwww.stackoverflow.com www.youtube.comなど..."関数は、すべてのURLが抽出された後になるはずだから、リンクを読み込んで変更します。他のJSを使用しない場合 – Di1997