【问题标题】:Search for value in string before a certain character position. [PHP]搜索字符串中某个字符位置之前的值。 [PHP]
【发布时间】:2019-07-31 12:10:31
【问题描述】:

我正在制作一个显示备份信息的网站。

我遇到的障碍是我需要在某个角色位置之前获取信息。

字符串看起来像:

数据1 => 2019-06-30-08-00-00 , 2019-07-30-08-00-00 , 2019-08-30-08-00-00 数据2 => 2019-06-30- 08-30-00 , 2019-07-30-08-30-00 , 2019-08-30-08-30-00

我从字符串中获取所有搜索信息的代码。

$BackupJob_list = $BackupJob_list['Data'];
$BackupJob_list = json_encode($BackupJob_list);

$string = "$BackupJob_list"; //String where I need the info from
$needle = "2019-08-30"; //The search value
$lastPos = 0; //Starting position
$positions = array();

//Get lastPos and go again...
while (($lastPos = strpos($string, $needle, $lastPos))!== false) {
    $positions[] = $lastPos;
    $lastPos = $lastPos + strlen($needle);
}

//Echo every value that is found in the string.
foreach ($positions as $value) {
    echo substr($BackupJob_list, $value, 19)."<br/>";
}

我想要得到的是:

2019-06-30-08-00-00

现在我明白了

2019-06-30-08-00-00

2019-06-30-08-30-00

【问题讨论】:

  • 所以您只想返回 1 个日期?
  • 我不明白你想达到什么目的
  • @JohnHalsey 我想从 Data1 返回一个日期。所以我需要在 Data2 开始之前进行搜索
  • @GiacomoM 在此评论中说起来很复杂。但我想在 Data1 中查找日期,而不是在 Data1 和 Data2 中。
  • @FeikeFalkena 我仍然无法理解您的问题。如果您无法在评论中进行编辑,请编辑问题。如果我们不明白,我们无法帮助您

标签: php arrays loops strpos


【解决方案1】:

您可以使用strpos (doc) 来检查:

$str = "2019-06-30-08-00-00,2019-07-30-08-00-00,2019-08-30-08-00-00";
$needle = "2019-08-30";
$arr = explode(",", $str); // convert string to array
foreach($arr as $e) {
    if (strpos($e, $needle) === 0) echo "Found! Here: $e \n";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 2019-10-02
    • 2016-12-08
    • 1970-01-01
    • 2018-08-21
    • 2016-08-04
    • 1970-01-01
    相关资源
    最近更新 更多