【问题标题】:PHP Find and replace after in a string?PHP在字符串中查找和替换?
【发布时间】:2012-10-30 16:38:52
【问题描述】:

我有一些包含单词LIMIT 3, 199LIMIT 0, 100 的字符串。

基本上我想在我的字符串中替换单词 LIMIT 及其后面的所有内容。

我如何在 PHP 中做到这一点? str_replace 只替换一个item,后面的LIMIT文本是动态的/

应该是这样的

WHEN JOHN WAS TRYING HIS SQL QUERY, HE FOUND THAT LIMIT, 121
// RETURN WOULD BE
WHEN JOHN WAS TRYING HIS SQL QUERY, HE FOUND THAT

WHEN JOHN TRIED LIMIT 343, 333 HE FOUND
// RETURN WOULD BE
WHEN JOHN TRIED 

【问题讨论】:

    标签: php preg-replace str-replace


    【解决方案1】:

    使用strpos 查找LIMIT 在字符串中的位置,然后使用substr 将字符串返回到该点为止。非常基本的字符串操作。

    或者如果你想要一个单行,也许可以使用preg_replace,虽然我认为这里不需要去正则表达式工具箱。

    【讨论】:

    • 这仍然是一个班轮:) substr($string,0,strpos($string,"LIMIT"));
    • 但这只有在他的字符串中有一次LIMIT etc. 时才有效。
    • @Asad 是正确的,但要求是在出现 LIMIT 之后删除所有内容,因此如果它在那里两次或更多次,则在删除所有内容后将删除多次出现第一次出现。
    【解决方案2】:

    使用 preg_replace 替换 LIMIT.+$ 与模式 /LIMIT.+$/m

    也就是说:

    $string = preg_replace("/LIMIT.+$/m","",$string);
    

    【讨论】:

    • 对所有答案都很满意。谢谢
    【解决方案3】:

    使用strstrstristr(不区分大小写)。仅适用于版本>= php 5.3.0

    $str = strstr($your_string, 'LIMIT', true);
    

    【讨论】:

      【解决方案4】:

      当你不理解正则表达式时,我建议不要使用它们,这里有一个不使用它们的简单答案(请注意,我确实建议学习正则表达式,但它们并不容易学习):

      $output = substr($input, 0, strpos($input, 'LIMIT'))
      

      【讨论】:

      • 这会删除所有内容,但限制等
      【解决方案5】:

      您可以使用strstr

      $break = "LIMIT";
      $array = array();
      $array[] = "WHEN JOHN WAS TRYING HIS SQL QUERY, HE FOUND THAT LIMIT, 121";
      $array[] = "WHEN JOHN TRIED LIMIT 343, 333 HE FOUND";
      
      echo "<pre>";
      foreach ( $array as $value ) {
          echo strstr($value, $break, true), PHP_EOL;
      }
      

      输出

      WHEN JOHN WAS TRYING HIS SQL QUERY, HE FOUND THAT 
      WHEN JOHN TRIED 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-22
        • 2015-09-22
        • 2019-06-24
        • 2016-01-13
        • 2011-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多