【问题标题】:PHP String Replace with end of string [duplicate]PHP字符串替换为字符串结尾[重复]
【发布时间】:2014-12-23 13:06:46
【问题描述】:

当他得到“;”时,我需要将一些字符串替换为字符串末尾或剪切字符串签到?

我正在尝试,但它不起作用:

$string = "Hello World; lorem ipsum dolor";
$string = str_replace(";","\0",$string);
echo $string; //I want the result is "Hello World"

【问题讨论】:

  • 你可以看看rtrim
  • 如果没有“;”会怎样在字符串中?
  • 重复的太多了,为什么没有人关闭这个呢?

标签: php string


【解决方案1】:

这应该适合你:

<?php

    $string = "Hello World; lorem ipsum dolor";
    echo $string = substr($string, 0, strpos($string, ";"));

?>

输出:

Hello World

【讨论】:

    【解决方案2】:

    您需要用; 分割字符串并从返回的数组中获取第一个元素(它总是至少有一个条目)。

    echo explode(';', $string, 2)[0];
    

    explode()

    【讨论】:

      【解决方案3】:

      我可以看到两种方法可以做到这一点,但最终都非常相似:

      更换零件

      当您在问题中使用 str_replace 并在其中放置一个 NUL 字节以结束一个字符串(可能在 C 中)时,您可能正在寻找的是 substr_replace

      $string = "Hello World; lorem ipsum dolor";
      $pos    = strpos($string, ";");
      if ($pos !== FALSE) {
          $string = substr_replace($string, "", $pos);
      }
      var_dump($string); // string(11) "Hello World"
      

      提取部分

      这是大多数其他答案所暗示的。这里甚至还有另一个替代功能,您可能正在寻找strstr() function: $result = strstr($string, ";", true);

      此函数调用将第三个参数设置为true,返回所有$string,直到找到针(第二个参数)“;”(不包括它)。

      完整示例:

      $string = "Hello World; lorem ipsum dolor";
      $result = strstr($string, ";", true);
      var_dump($result); // string(11) "Hello World"
      

      取决于当“;”是或不是字符串的一部分时它应该如何工作,如果你想返回完整的字符串,你需要添加一次:

      $result = strstr("$string;", ";", true);
      

      如果你用strpos()操作也是类似的,你也要处理FALSE的情况。

      【讨论】:

      • 啊,忘了strstr()有3个参数!非常干净和简单的答案!
      【解决方案4】:

      从“;”中删除其余部分使用来自http://php.net/manual/de/function.strpos.php的strpos

      echo substr($string, 0, strpos($string, ";"));
      

      【讨论】: