【问题标题】:In paragraph how to find strings between the given strings using php?在段落中如何使用 php 在给定字符串之间查找字符串?
【发布时间】:2018-03-30 06:07:38
【问题描述】:

另存为 siva.txt

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt SIVA ut labore et dolore magna aliqua。 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodoconsequat。 Duis aute irure dolor in reprehenderit in voluptate velit esse

cillum dolore eu fugiat nulla pariatur。除了 PRABU sint occaecat cupidatat non proident,sed in culpa qui officia deserunt mollit anim id est labourum Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut laboure et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor

reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 xcepteur sint occaecat cupidatat non proident, SIVA sunt in culpa qui

officia deserunt mollit anim id est labourum PRABU

【问题讨论】:

    标签: php arrays regex string match


    【解决方案1】:

    我喜欢 Jan 用正则表达式给出的答案。我尝试使用自定义编码。为了记录,我们开始吧。

    $text = "Lorem ipsum dolo ... it anim id est laborum PRABU";
    //$text should have all the text.
    $keys = array('SIVA','PRABU');
    $startPos = 0;
    $endPos = 0;
    $arr = [];
    while($startPos < strlen($text)){
        $startPos = strpos($text, $keys[0], $startPos);
        if($startPos === false){
            break;
        }
        $startPos += strlen($keys[0]);
        $endPos = strpos($text, $keys[1], $endPos);
        $data = substr($text,$startPos, $endPos - $startPos);
        array_push($arr,$data);
        $endPos += strlen($keys[1]);
    }
    

    这是结果

    echo "<pre>";
    print_r($arr);
    echo "</pre>";
    

    【讨论】:

      【解决方案2】:

      总是一样的,真​​的:

      SIVA((?s).*?)PRABU
      # look for SIVA
      # ((?s) ... ) forms a capturing group where the dot matches everything
      # .*? is lazy
      # match until PRABU is found
      

      使用第一组并查看a demo on regex101.com


      PHP:
      $regex = '~SIVA((?s).*?)PRABU~';
      if (preg_match_all($regex, $data, $matches)) {
          print_r($matches[1]);
      }
      

      这会产生

      Array
      (
          [0] =>  ut labore et dolore magna aliqua. Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodoconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
      
      cillum dolore eu fugiat nulla pariatur. Excepteur 
          [1] =>  sunt in culpa qui
      
      officia deserunt mollit anim id est laborum 
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-13
        • 1970-01-01
        • 2014-10-22
        • 1970-01-01
        • 2021-03-30
        • 2016-05-12
        • 1970-01-01
        • 2020-02-06
        相关资源
        最近更新 更多