我想获取脚本来搜索$ open_email_msg,不同的电子邮件将有不同的信息,但格式如下.
我还没有真正使用正则表达式,但我想要做的是每当我有它搜索字符串时它会搜索"标题:[标题数据]","类别:[类别数据].我在问因为我觉得不像
strpos($open_email_msg, "Title: (*^)");
Run Code Online (Sandbox Code Playgroud)
甚至会工作.
这只是整个代码的片段,其余部分将信息插入MySQL表中,然后发布到网站上的新闻文章中.
有人可以帮我找到解决方案吗?
严格的电子邮件格式:
新闻更新
标题:文章标题
标签:tag1 tag2
类别:文章类别,第2文章类别
片段:文章片段.
消息:文章消息.图片.更多文字,更多文字.Lorem impsum dolor坐着.
<?php
//These functions searches the open e-mail for the the prefix defining strings.
//Need a function to search after the space after the strings because the subject, categories, snippet, tags and message are constant-changing.
$subject = strpos($open_email_msg, "Title:"); //Searches the open e-mail for the string "Title"
$subject = str_replace("Title: ", "" ,$subject);
$categories = strpos($open_email_msg, "Categories:"); //Searches the open e-mail for the string "Categories"
$snippet = strpos($open_email_msg,"Snippet"); //Searches the open e-mail for the string "Snippet"
$content = strpos($open_email_msg, "Message"); //Searches the open-email for the string "Message"
$tags = str_replace(' ',',',$subject); //DDIE
$uri = str_replace(' ','-',$subject); //DDIE
$when = strtotime("now"); //date article was posted
?>
Run Code Online (Sandbox Code Playgroud)
cam*_*aca 21
尝试使用PREG_OFFSET_CAPTURE标志preg_match.像这样的东西:
preg_match('/Title: .*/', $open_email_msg, $matches, PREG_OFFSET_CAPTURE);
echo $matches[0][1];
Run Code Online (Sandbox Code Playgroud)
这应该给你字符串的初始位置.
请注意,我正在使用的正则表达式可能是错误的,并没有考虑行结尾和东西,但这是另一个主题.:)
编辑.你想要的更好的解决方案(如果我理解正确)将是这样的:
$title = preg_match('/Title: (.*)/', $open_email_msg, $matches) ? $matches[1] : '';
Run Code Online (Sandbox Code Playgroud)
然后,您将获得标题到$title变量,如果没有找到标题,则为空字符串.
小智 8
您可以使用preg_match而不是strpos来进行正则表达式
preg_match (regex, $string, $matches, PREG_OFFSET_CAPTURE);
PREG_OFFSET_CAPTURE gives you the position of match.
Run Code Online (Sandbox Code Playgroud)