【问题标题】:PHP Get first array value that ends with ".jpg"PHP 获取第一个以“.jpg”结尾的数组值
【发布时间】:2016-02-19 08:33:49
【问题描述】:

我有一些数组,它们的格式可能都像这样:

Array (
    [0] => .
    [1] => ..
    [2] => 151108-some_image-006.jpg
    [3] => high
    [4] => low
)

我知道它们有 5 个值,但我不能确定每个值的放置位置。

我试图只从这个数组中获取图像

$pos = array_search('*.jpg', $main_photo_directory);
echo $main_photo_directory[$pos];

但众所周知,它正在寻找它无法找到的文字 *.jpg。我对正则表达式不是很熟练,也不知道如何格式化合适的字符串。

从这个数组中获取第一张图片(假设可能不止一张)的最佳方法是什么?

添加

我问的一个原因是找到一种简单的方法来搜索数组。我不知道正则表达式,但我想使用它。我写了一个问题,寻找一个正则表达式来在没有搜索结果的字符串末尾找到“.jpg”。

【问题讨论】:

  • 正则表达式???使用循环?
  • @PeeHaa 并搜索什么?
  • 以.jpg结尾的字符串
  • 对 - 这是我的问题。如何搜索以 .jpg 结尾的字符串?
  • 有 2k 的代表,我希望你能解决这个问题

标签: php arrays regex


【解决方案1】:

这应该可行:

echo current(preg_grep('/\.jpg$/', $array));

【讨论】:

  • 最干净、最简单、最直接的答案。谢谢你。 - 将在 7 分钟内接受
  • 确实,令人印象深刻。你只需要注意如何使用结果,例如,你不能简单地在函数调用中使用current()
  • @arkascha 很好,我正在使用文字字符串通过 ajax 调用进行回推。所提供的内容非常适合我的需求。
  • @arkascha:什么?为什么不? echo strtoupper(current(preg_grep('/\.jpg$/', $array)));
【解决方案2】:

你可以遍历数组,直到找到一个以 jpg 结尾的字符串:

function endsWith($haystack, $needle) {
    return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
}

$array = [];
$result = false;
foreach($array as $img) {
  if(endsWith($img, '.jpg')) {
    $result = $img;
    break;
  }
}

echo $result;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2022-01-09
    相关资源
    最近更新 更多