我想解决以下问题:
我通过imap获取邮件;现在我使用regexp来获取两个quare括号之间的文本(Ticket-ID)。
例如:[Ticket-ID: 84824] Re:Test
preg_match("/\[Ticket-ID: (\S+)\]/", $mail->subject, $matches)
获得了84824 - 但是如何使用PHP获得“Re:Test”或“Test”?
现在我想获得没有任何票号的纯主题等等。我该如何解决?
答案 0 :(得分:2)
您可以在正则表达式模式中再使用一个捕获组,如下所示:
preg_match("/\[Ticket-ID: (\S+)\]\s*(.*)/", $mail->subject, $matches)
它将在第二场比赛中捕获“Re:Test”,因此您可以从$matches[2]
答案 1 :(得分:1)
你可以这样做:
\[[\s\S]+\][\s]*(.*)
示例代码:
<?php
$str ='[Ticket-ID: 84824] Re:Test';
preg_match('/\[[\s\S]+\][\s]*(.*)/',$str,$matches);
echo $matches[1];
?>
输出:
Re:Test
如果您只想Test
,请使用以下正则表达式:
\[[\s\S]+\][\s]*Re:(.*)
答案 2 :(得分:0)
$string='[Ticket-ID: 84824] Re:Test';
$bracket_location=strpos($string,'] ');
$subject=substr($string,$bracket_location+2,strlen($string)-$bracket_location+2);
循环你的比赛,$ subject会给你Re:Test。
答案 3 :(得分:0)
试试这个正则表达式: \[[^:]+:\s*(\d+)\]
$re = "/\\[[^:]+:\\s*(\\d+)\\]/";
$str = "[Ticket-ID: 84824] Re:Test";
preg_match($re, $str, $matches);