【问题标题】:PHP Remove Everything After Character and Stop Before CharacterPHP删除字符后的所有内容并在字符前停止
【发布时间】:2019-02-11 23:37:49
【问题描述】:

我的字符串:

$string = '/my-picture-gallery-1000x2000.jpg';

我需要删除字符串中最后一次出现“-”(包括“-”)之后的所有内容,并在“。”处停止。在字符串中。

所以输出应该是:

/my-picture-gallery.jpg

但我需要它停止并保留“。”之后的所有内容。

【问题讨论】:

  • 你试过什么?你被困在哪里了?
  • $string = substr($string, 0, strpos($string, "-"));但我需要它停止并保留“。”之后的所有内容
  • 请将您的尝试添加到问题本身。另外,请检查strripos是否可以帮助您
  • substr 不会在两者之间“停止”。但是,如果您设法使用它来获取最后一个 - 之前的部分,那么您应该能够弄清楚如何获取(最后一个). 之后的所有内容,然后简单地将两者连接起来......跨度>
  • preg_replace('/^(.*)-.*(\.[a-z]+)$/', "$1$2") ?

标签: php


【解决方案1】:

应该能够结合使用 PHP 的 strstr 内置函数和 str_replace 来获得你想要的结果

$string = '/my-picture-gallery-1000x2000.jpg';
echo str_replace(strrchr($string, '-'), '', $string) . strstr($string, '.');

这会给你留下:

/my-picture-gallery.jpg

更易读的版本

$string = '/my-picture-gallery-1000x2000.jpg';

$dimensions = strrchr($string, '-');
$extension = strrchr($string, '.');

$image = str_replace($dimensions, '', $string) . $extension;

【讨论】:

    【解决方案2】:
    $string = '/my-picture-gallery-1000x2000.jpg';
    echo substr($string,0,strrpos($string,'-')) . substr($string,strrpos($string,'.'));
    

    【讨论】:

      【解决方案3】:

      你可以使用 explode() 函数。它返回字符串数组。只需选择部分或部分字符串并将它们组合成一个字符串。 更多关于 explode() 函数的信息:http://php.net/manual/en/function.explode.php

      【讨论】:

        【解决方案4】:
        if(false !== $pos = strrpos($string, '-'))
          $s = substr($string, 0, $pos);
        

        首先使用反向搜索检查针是否在 heystack 中。然后获取从 start 到找到的位置的字符串。

        根据您的编辑,正则表达式将是合适的。这还有一个优点是它可以处理 UTF8 文件路径。

        $new_name = preg_match('~^(.*)-[^-.]*(\..*)$~u', $string, $matches)
          ? $matches[1].$matches[2]
          : $string
        ;
        

        【讨论】:

          【解决方案5】:

          试试这个:

          $string = '/my-picture-gallery-1000x2000.jpg';
          
          $ext= strstr($string, '.');
          $dash=strrpos($string,'-');
          
          $filename= substr($string, 0 ,$dash);
          
          echo $filename.$ext;
          

          简而言之,您可以使用:

          $filename = substr($string, 0 ,strrpos($string,'-')).strstr($string, '.');
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-11-15
            • 2011-08-03
            相关资源
            最近更新 更多