【问题标题】:Finding a numeric ID within an URL including numbers在包含数字的 URL 中查找数字 ID
【发布时间】:2016-12-11 22:08:47
【问题描述】:

我在访问和转发 ID 时遇到了一些问题。 我成功地从我的 URL 中提取了 ID,但如果 URL 还包含不可预测的数字,我就会遇到问题。

澄清一下:

到目前为止我为提取 ID 所做的努力 (JS)

var idString = window.location.href;
    idString = idString.replace(/e107/gi, "__ersetzt__");
    idString = idString.replace("http://localhost/Westbomke/backendV5/", "");
    idString = idString.replace(/[^0-9]+/g, "");

一些网址示例

工作:

http://localhost/Westbomke/backendV5/e107-master/e107_projekte/BMW/235_Projekt_BMW-Event/page.php    结果:235 = id

不工作:

localhost/Westbomke/backendV5/e107-master/e107_projekte/BMW/235_Projekt_BMW-Event01/page.php

localhost/Westbomke/backendV5/e107-master/e107_projekte/company1337/235_Projekt_1337Event/page.php

现在,如果我可以排除   /******_Projekt_    部分(**** = 随机数量的数字)并将其解析为整数,我会很好,但我不知道该怎么做,或者如果有可能。

我试图在这里和通过谷歌找到一些东西,但我很可能不会要求正确的东西。

提前感谢您的时间和帮助!

【问题讨论】:

    标签: javascript regex url str-replace


    【解决方案1】:

    就结构而言,您正在处理的这个 URL 是否稳定? 如果您不熟悉正则表达式并且结构相当稳定,那么以下代码将为您完成这项工作:

    var myString = "http://localhost/Westbomke/backendV5/e107-master/e107_projekte/BMW/235_Projekt_BMW-Event/page.php";
    var mySplitString = myString.split("/");
    var myNumber = parseInt(mySplitString[8]);
    
    console.log(myNumber);

    添加下面的函数将为您提供更多的灵活性。

    var myString = "http://localhost/Westbomke/backendV5/e107-master/e107_projekte/BMW/235_Projekt_BMW-Event/page.php";
    
    function getProject(myString , myDist){
      var mySplitString = myString.split("/");
      var myID = '';
      mySplitString.forEach(function(key , index){
        if(key.indexOf(myDist) > 0)
         myID = parseInt(mySplitString[index]);
      });
    
      return myID;
    }
    
    var myID = getProject(myString , "Projekt");
    console.log(myID);

    【讨论】:

    • localhost/Westbomke/backendV5/e107-master/e107_projekte 是与这些页面相关的所有链接中使用的正常结构。之后是变化很大的公司名称,然后是唯一ID_Projekt_ 也是常量,BMW-Event 是项目名称,它也会发生变化。 page.php 再次保持不变。我非常感谢您为帮助我所做的努力。我现在将使用 hsz 的代码,如果遇到任何问题并且由于某种原因(例如从 localhost 切换到在线)无法正常工作,我将尝试您的解决方案。
    【解决方案2】:

    你可以试试:

    var url = 'http://localhost/Westbomke/backendV5/e107-master/e107_projekte/BMW/235_Projekt_BMW-Event/page.php';
    var id = +url.match(/\/(\d+)/)[1];
    

    【讨论】:

    • 难以置信。感谢这么快的答复!我真的不明白这种提取是如何工作的,但确实如此。如果您不介意,我很想解释一下这个特定的 url.match 是如何工作的。
    • @Detale 不客气 - 记得用左边的粗体标记正确答案。
    猜你喜欢
    • 2017-06-13
    • 2011-12-18
    • 2012-10-19
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多