这是我第一次使用trim函数,我希望得到Time,不包括我的字符串的开括号和右括号。你能给我一些如何做到的提示和建议吗?
$string = "Updated by Carewina Almonte (04/02/2018 21:58:32)";
echo trim($string, "Updated by Carewina Almonte (04/02/2018");
exit();
答案 0 :(得分:2)
您可以使用preg_match
执行此任务:
$str = 'Updated by Carewina Almonte (04/02/2018 21:58:32)';
preg_match('/(?<=\(\d{2}\/\d{2}\/\d{4} ).*(?=\))/', $str, $match);
echo $match[0];
<强>故障:强>
正面观察(?<=\()
。断言下面的正则表达式匹配:
\(
字面匹配字符(
(区分大小写).*
匹配任何字符(行终止符除外)*
量词 - 在零和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)\d{2}
匹配一个数字(等于[0-9]
){2}
量词 - 完全匹配2
次\/
字面匹配字符/
(区分大小写)积极前瞻(?=\))
。断言下面的正则表达式匹配:
\)
字面匹配字符)
(区分大小写)答案 1 :(得分:2)
在php中,你可以做到这一点,当且仅当日期和时间总是出现在字符串的末尾时才有效 -
$string = "Updated by Carewina Almonte (04/02/2018 21:58:32)";
$time = substr($string,-9,8);
echo $time;
答案 2 :(得分:1)
对于您的示例字符串,您可能会使用\(\K[^)]+(?=\))
匹配括号内的内容。
这将匹配左括号\(
,然后使用\K
重置报告的匹配的起点。
在那场比赛之后,不是一个或两次以上的右括号[^)]+
和一个肯定的前瞻,以断言接下来的是一个右括号(?=\))
。
然后,您可以使用$matches[0]
创建DateTime或使用$re = '/\(\K[^)]+(?=\))/';
$str = 'Updated by Carewina Almonte (04/02/2018 21:58:32)';
preg_match($re, $str, $matches);
$dateTime = new DateTime($matches[0]);
if ($dateTime !== false) {
echo $dateTime->format('H:i:s');
}
使用changed
并提取时间:
changed
答案 3 :(得分:0)
$string = "Updated by Carewina Almonte (04/02/2018 21:58:32)";
if(preg_match("/\d{2}:\d{2}:\d{2}/", $string , $match))
{
echo $match[0];
}
在这种情况下应使用正则表达式。