【问题标题】:get a specific part of a string获取字符串的特定部分
【发布时间】:2011-12-03 17:17:13
【问题描述】:

我有以下网址。 http://domain.com/userfiles/dynamic/images/whatever_dollar_1318105152.png url 中的所有内容都可以更改,除了 userfiles 部分和最后一个下划线。基本上我想得到网址的一部分 userfiles/dynamic/images/whatever_dollar_ 什么是这样做的好方法。我是开放的,或者是 JavaScript 或 php。

【问题讨论】:

标签: php javascript jquery regex string


【解决方案1】:

假设你的字符串存储在 $s 中,简单地说:

echo preg_replace('/.*(userfiles.*_).*/', '$1', $s);

【讨论】:

    【解决方案2】:

    你可以用 JavaScript 试试:

    var string = "http://domain.com/userfiles/dynamic/images/whatever_dollar_1318105152.png";
    
    var newString = string.substring(string.indexOf('userfiles'),string.lastIndexOf('_'));
    alert(newString); // returns: "userfiles/dynamic/images/whatever_dollar" (Without quotes).
    

    JS Fiddle demo.

    参考资料:

    【讨论】:

      【解决方案3】:

      在 PHP 中使用 parse_url 将 url 拆分为各个部分。获取返回的path 部分。它包含不带域的路径和查询字符串。

      之后使用strrpos 查找路径中_ 的最后一次出现。

      使用substr,您可以复制路径的第一部分(直到找到_),然后就完成了。

      【讨论】:

      • 感谢 Parse_url 和 PHP_URL_PATH 很棒。为什么要避免在网址上使用正则表达式???使用正则表达式似乎更有效。
      • 正则表达式在这样的操作上几乎没有效率更高。即使您可以在这个问题上节省两三行代码,但在屏幕后面,您正在启动一个具有许多复杂操作的复杂解析器。在这些简单的情况下,正则表达式的可读性通常不如几个简单的函数。但是用正则表达式解析 url 并不像用正则表达式解析 XML 那样糟糕。 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多