【问题标题】:Get the substring that is in between two strings php获取两个字符串之间的子字符串 php
【发布时间】:2013-09-12 15:50:28
【问题描述】:

假设我有一组以某种方式格式化的字符串:

$string1 = "(substring1) Hello";
$string2 = "(substring2) Hi";

如何将 '()' 的内部作为单个字符串获取。我知道这是可能的 使用:

$substring = explode( ")",$string1 );

但是我留下了包含 "(substring"$substring[0] 和包含休息一下。有没有快速了解'()'的内部的方法?谢谢,我知道这是一个简单的问题。

【问题讨论】:

  • 只是一个注释。 explode 用于将字符串拆分为多个部分。您在这里想要的是按照一定的模式从另一个字符串extract一个字符串。因此preg_match(_all) 是要走的路。 Hanky Panky 的回答正是我将如何解决这个问题。

标签: php string split substring explode


【解决方案1】:

explode 可能需要解决方法,因为 () 不同。一个简单的正则表达式即可完成工作。

$string1 = "(substring1) Hello";
preg_match('#\((.*?)\)#', $string1, $match);  // preg_match_all if there can be multiple such substrings
print $match[1];

【讨论】:

    【解决方案2】:

    好吧,如果您想保持爆炸,请使用您的子字符串[0]:

    $substring[0] = substr($substring[0],1);
    

    这将返回“(”之后的部分。

    否则,请使用 regular expression 来匹配您需要的内容!

    编辑:

    查看上面的答案查看正则表达式解决方案,这家伙为您提供了解决问题的好方法! :]

    【讨论】:

      【解决方案3】:

      如果您想使用explode 来完成这项工作:

      <?php
      $string1 = "(substring1) Hello";
      
      function between($delimiter1, $delimiter2, $subject)
      {
          $arr = explode($delimiter2, $subject);
          if (!$arr || empty($arr) || count($arr) == 1)
          {
              return '';
          }
          $oldStr = trim(array_shift($arr));
          $arr = explode($delimiter1, $oldStr);
          if (!$arr || empty($arr))
          {
              return '';
          }
          return trim(array_pop($arr));
      }
      
      $result = between('(', ')', $string1);
      echo $result, "\n";
      

      但我建议你使用preg_match函数,它是使用正则表达式匹配字符串,更强大更复杂:

      <?php
      $string1 = "(substring1) Hello";
      
      $pattern = '/\((.*?)\)/';
      $match = array();
      preg_match($pattern, $string1, $match);
      echo $match[1], "\n";
      

      【讨论】:

      • more powerful and complicated:: 真的更复杂吗?与complicated 爆炸代码相比,该正则表达式似乎如此简单
      猜你喜欢
      • 1970-01-01
      • 2013-01-31
      • 2011-08-07
      • 2015-06-24
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      相关资源
      最近更新 更多