管道电子邮件 - 如何发送正文,multipart / alternative / php preg_match_all返回1或空数组

时间:2012-12-21 16:54:35

标签: php regex arrays pipe preg-match-all

在搜索答案时,我找到了这个脚本here

然而:

它只能以纯文本形式发送收到的邮件正文。为了不丢失数据(链接),我需要以与收到的格式相同的格式发送正文。

这个脚本是否有一个简单的改变来实现它?

btw,稍后,我需要在我的服务器上保存链接文件(来自电子邮件),并用我自己的链接替换正文中的链接。

感谢。

更新

不知何故,我解决了第一个问题(在我的电子邮件中添加原始的boundery值),现在,我还有3个要去。此代码返回1 print_r($urls)

$pattern = '#^http://domain.com/(.*)(\w*)0\b#';
preg_match_all($pattern, $email, $urls);

相同的代码返回带有这两个输出的空数组:

1 print_r($urls, true)

2 print_r($urls[0], true)

像这样:

1

Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
        )

    [2] => Array
        (
        )

)

2

Array
(
)

然而,当我测试代码here时,它就像魅力一样

我如何获得我的价值观?将它们放在变量中是非常好的,比如$ url1,$ url2 ......

有人可以帮忙吗? (非常感谢您的时间和精力!)

1 个答案:

答案 0 :(得分:0)

我会回答我的问题。

好的,我已经解决了这个问题。如果有人需要,这里有一些信息......

正则表达式有一个额外的^。更进一步,我改进了这样的模式:"#http://domain.com/([=a-zA-Z\d/-]+)(.|\n|\r)([a-zA-Z\d/-]+)#"此网址有=,并且已删除此行:$var1=preg_replace("#=(.|\n|\r)#","",$var);这不是最好的方法,但它有效。我在数组中获得了链接,后来我能够使用file_get_contents()file_put_contents()下载文件,str_replace可以轻松更改链接。一切都是通过for循环完成的,因为每封电子邮件中的链接数量并不相同。

大家节日快乐!