【问题标题】:PHP Regex Remove Everything After Last Character In StringPHP Regex 删除字符串中最后一个字符后的所有内容
【发布时间】:2014-10-22 23:38:37
【问题描述】:

我有以下 img url 字符串,我正在尝试对其进行清理

$img_string = http://image.s5a.com/is/image/saks/0401694719016_647x329.jpg," "="">/-/http://image.s5a.com/is/image/saks/0401694719016_A1_647x329.jpg," "="">

我先这样爆字符串

$img_array = explode('/-/',  $img_string);

但是我找不到一个正则表达式来删除图像网址中最后一个字符之后的所有内容。

例如无论 img url 是否以 .png 或 .jpg 或 .jpeg 结尾,我都需要对其进行清理。 我的预期输出是

http://image.s5a.com/is/image/saks/0401694719016_647x329.jpg

而不是

http://image.s5a.com/is/image/saks/0401694719016_647x329.jpg," "="">

所以我的问题是,有人可以帮助我使用所需的正则表达式来实现这一目标吗?

谢谢

【问题讨论】:

标签: php regex


【解决方案1】:
(?<=jpg|png|jpeg).*

试试这个。替换为empty string。查看演示。

http://regex101.com/r/rQ6mK9/44

【讨论】:

  • 那么我应该在这个正则表达式中使用 preg_replace 吗?
  • @user2028856 是的,你应该这样做。这将替换 png jpg 或 jpeg 之后的任何内容
【解决方案2】:

您可以使用此正则表达式使用preg_match

[^,]+

RegEx Demo

或者,您也可以将此正则表达式用于preg_match

^.+?\.(png|jpe?g)

【讨论】:

    【解决方案3】:

    应该使用这个,从 URL 中删除逗号:

    if (preg_match_all("/(.*?),/is", $img_string, $matches)) {
      $url = $matches[1][0];
      echo $url;
    }
    

    编辑:在这里测试:http://ideone.com/pq1WzA

    【讨论】:

    • 但问题是,逗号后面的东西只是一个演示,并不总是这样,有时在最终的jpg或png后面还有其他字符或符号。所以我需要更灵活的东西
    【解决方案4】:

    像这样删除第一个逗号后的所有内容:

    $result = preg_replace('@[,].*$@ui', '', $img_string);
    

    【讨论】:

      猜你喜欢
      • 2013-01-23
      • 2021-01-18
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      相关资源
      最近更新 更多