如何使用PHP从字符串中提取Arrival Date与Departure Date?
PHP提取字符串中的抵达日期和离开日期
需求说明
需要使用PHP从指定字符串中获取抵达日期(Arrival Date)和离开日期(Departure Date),给定目标字符串示例:
Guest Name :WOLAK, KAMIL - Arrival Date: 2022-09-29 - Departure Date: 2022-10-06 - Ref: H242806
方法一:正则表达式匹配(推荐)
利用正则精准匹配日期格式(YYYY-MM-DD),直接定位目标内容:
$str = "Guest Name :WOLAK, KAMIL - Arrival Date: 2022-09-29 - Departure Date: 2022-10-06 - Ref: H242806"; // 提取抵达日期 preg_match('/Arrival Date: (\d{4}-\d{2}-\d{2})/', $str, $arrivalMatches); $arrivalDate = $arrivalMatches[1] ?? '未找到抵达日期'; // 提取离开日期 preg_match('/Departure Date: (\d{4}-\d{2}-\d{2})/', $str, $departureMatches); $departureDate = $departureMatches[1] ?? '未找到离开日期'; // 输出结果 echo "抵达日期:" . $arrivalDate . PHP_EOL; echo "离开日期:" . $departureDate . PHP_EOL;
- 核心逻辑:通过正则捕获组提取日期标签后的字符串
- 兼容处理:用
??运算符处理匹配失败的情况,避免报错
方法二:分割字符串遍历提取
如果字符串格式固定,可通过分割后遍历筛选目标:
$str = "Guest Name :WOLAK, KAMIL - Arrival Date: 2022-09-29 - Departure Date: 2022-10-06 - Ref: H242806"; // 按"-"分割并去除每个元素的首尾空格 $parts = array_map('trim', explode('-', $str)); $arrivalDate = '未找到抵达日期'; $departureDate = '未找到离开日期'; foreach ($parts as $part) { // PHP 8.0+版本写法 if (str_starts_with($part, 'Arrival Date:')) { $arrivalDate = trim(str_replace('Arrival Date:', '', $part)); } elseif (str_starts_with($part, 'Departure Date:')) { $departureDate = trim(str_replace('Departure Date:', '', $part)); } // PHP 8.0以下版本替换为: // if (strpos($part, 'Arrival Date:') === 0) { // $arrivalDate = trim(str_replace('Arrival Date:', '', $part)); // } elseif (strpos($part, 'Departure Date:') === 0) { // $departureDate = trim(str_replace('Departure Date:', '', $part)); // } } echo "抵达日期:" . $arrivalDate . PHP_EOL; echo "离开日期:" . $departureDate . PHP_EOL;
- 核心逻辑:将字符串分割为数组后,遍历判断元素是否包含日期标签,再提取标签后的内容
内容的提问来源于stack exchange,提问作者mohammed
相关产品推荐
相关产品推荐

