希望你们中的一些人对 php 有很好的了解!
基本上制作这个的人是 MIA,所以我不能问他我需要做什么来解决我们遇到的问题。
背景: 我们是一家锁匠公司,当他们有新工作时,我们使用自定义 Web 应用程序来通知我们的锁匠。这个网络应用程序还做了一些额外的事情,比如提供 gps 位置、工作时间以及在工作完成后从客户端保存签名的能力。
问题: 该应用程序通过接收从我们的名为 E3 的帐户管理应用程序发送的电子邮件来工作,该电子邮件(例如:http ://cl.ly/image/2E433O330T0N )被此 Web 应用程序读取,并被解析为电子邮件和网页并发送给锁匠以查看他的新工作。当锁匠到达他的手机上的网页时(例如:http ://cl.ly/image/0P1I0R0h0O3K),他可以看到工作详细信息,包括客户的姓名、地址和联系方式。但问题是,由于原始电子邮件中没有为工作说明分配标题,因此代码必须确定工作说明所在的位置,这是有问题的部分,因为 Web 应用程序不再显示工作中的数据笔记。工作笔记很重要,因为它告诉锁匠他需要修理什么。这以前有效,但现在刚刚停止工作,我们不确定为什么。
数据如何传输到 Web 应用程序是非常有趣的,而不是有一个数据库来存储数据,它被放在地址栏中,然后网页解释代码并将其格式化到页面中。
例如,这是当前链接的样子(取出数据,替换为 xxxxxxx):
http://www.xxxxxxx.com/apps/xxxxxx/on-my-way?客户=xxxxxx&公司=xxxxxx&手机=xxxxxxx&电话=xxxxxxx&联系人=xxxxxxxx&地址数据=数组&地址索引=3&街道地址=xxxxxxxxx&地址位置=xxxxxxxx&邮政编码=xxxxxxx&城市=xxxxxxx&客户电子邮件=&工作日期=11/22/2012&工作时间=1:30:00 %20PM& jobID =xxxxxx& jobAMPM =PM& adminEmail =xxxxxxx&公司电话=xxxxxxxx&员工电子邮件=xxxxxxxx&员工姓名=xxxxxxx&员工电话=xxxxxxxx
以前,在工作时,此链接添加了一个 jobNotes 字段:
http://www.xxxxxxxx.com/apps/xxxxxxxx/on-my-way?客户=xxxxxxxx&公司=xxxxxxxx&手机=xxxxxxxx&电话=&联系人=xxxxxxxx&地址数据=数组&地址索引=4&街道地址=xxxxxxxx&地址位置=xxxxxxxx&邮编=xxxxxxxx&城市=xxxxxxxx&客户电子邮件=xxxxxxxx&工作注释=Quote%20on%20installing%20new%20keying%20system% 0A%0AAlso%20would%20like%20a%20Quote%20on%20Install%20CCTV%0A%0ASub%20Total%3A%202%2C236.36%0AGST%3A%20223.64%0ATotal%3A%202%2C460.00%0A% 0AMISC&*工作日期=11/19/2012 *& jobTime =2:00:00%20PM& jobID =xxxxxxxx& jobAMPM =PM& adminEmail =xxxxxxxx& noreplyEmail =xxxxxxxx& companyPhone =xxxxxxxx& staffEmail =xxxxxxxx& staffName =xxxxxxxx& staffPhone =xxxxxxxx
编码:
这是 e3-parser.php 的摘录,该文件是用于将数据从 e3 电子邮件转换到 Web 应用程序的主文件。
// Job notes
if ($this->clientEmail) {
// REMOVED NOW THAT EMAIL IS BEING PUT ON THIRD LINE OF ADDRESS
// // If customer email present grab everything after it save it as job notes
// preg_match("/$this->clientEmail[^-]+/",$e3Output,$matches);
// $result = implode("",$matches);
// $notes = trim(str_replace($this->clientEmail,'',$result));
// $this->jobNotes = rawurlencode($notes);
// } else {
// Fall back to grabbing everything after the time
preg_match("/AM[^-]+/",$e3Output,$matchesAM);
preg_match("/PM[^-]+/",$e3Output,$matchesPM);
$resultAM = implode("",$matchesAM);
$resultPM = implode("",$matchesPM);
$notes = trim(str_replace('AM','',$resultAM) . str_replace('PM','',$resultPM));
$this->jobNotes = rawurlencode($notes);
}
这里的问题是,它是否成功抓取了Required Time字段之后列出的数据?(它正在读取的示例电子邮件http://cl.ly/image/2E433O330T0N
:)
以下是将解析后的数据放入网页的代码:
// Create job link
$url = $e3->create_job_url('http://www.prvgroup.com.au/apps/jobbook/on-my-way?');
$linkName = "View job details";
$href = '<a class="btn btn-small" href="' . $url . '&staffEmail=' . $staff- >staffEmail . '&staffName=' . $staff->staffName . '&staffPhone=' . $staff->staffPhone . '">' . $linkName . '</a>';
这将通过电子邮件发送给锁匠,在可点击的链接“查看工作详细信息”上通知他他的新工作。该链接充满了所需的数据。但是从外观上看,jobNotes 的数据不存在。当代码显示 jobNotes 时,我对这段代码的备份在此处显示完全相同的内容,因此我不确定它是如何放入该字段的。
如果你能做到这一点,那就太好了!我希望我对问题是什么已经足够清楚了,但是如果您需要更多说明,请问!
干杯,马克