我遇到了这段代码的问题,并且 PHP 方法“substr”正在播放。我只是不明白。这是我想要实现的快速介绍。我有来自 Joomla 的电子邮件订阅者的大量 XML 文档。我正在尝试将其导入 Mailchimp,但 Mailchimp 对将电子邮件导入列表的方式的语法有一些规则。所以目前的语法是这样的:
<subscriber>
<subscriber_id>615</subscriber_id>
<name><![CDATA[NAME OF SUBSCRIBER]]></name>
<email>THE_EMAIL@SOMETHING.COM</email>
<confirmed>1</confirmed>
<subscribe_date>THE DATE</subscribe_date>
</subscriber>
我想制作一个简单的 PHP 脚本,它接收所有这些电子邮件并像这样输出它们:
[THE_EMAIL@SOMETHING.COM] [NAME OF SUBSCRIBER]
[THE_EMAIL@SOMETHING.COM] [NAME OF SUBSCRIBER]
[THE_EMAIL@SOMETHING.COM] [NAME OF SUBSCRIBER]
[THE_EMAIL@SOMETHING.COM] [NAME OF SUBSCRIBER]
如果我能做到这一点,那么我可以将它复制粘贴到 Mailchimp 中。
现在这是我的 PHP 脚本,到目前为止:
$fileName = file_get_contents('emails.txt');
foreach(preg_split("/((\r?\n)|(\r\n?))/", $fileName) as $line){
if(strpos($line, '<name><![CDATA[')){
$name = strpos($line, '<name><![CDATA[');
$nameEnd = strpos($line, ']]></name>', $name);
$nameLength = $nameEnd-$name;
echo "<br />";
echo " " . strlen(substr($line, $name, $nameLength));
echo " " . gettype(substr($line, $name, $nameLength));
echo " " . substr($line, $name, $nameLength);
}
if(strpos($line, '<email>')){
$var1 = strpos($line, '<email>');
$var2 = strpos($line, '</email>', $var1);
$length = $var2-$var1;
echo substr($line, $var1, $length);
}
}
第一个 if 语句正常工作。它识别,如果行上有一个''-标签,如果有,那么它会找到结束标签并使用 substr 方法输出电子邮件。
第二个 if 语句让我很烦。If 应该和第一个 if 语句做同样的事情,但事实并非如此。长度是正确的长度(我已经检查过)。类型是正确的类型(我已经检查过)。但是当我尝试回应它时,什么也没有发生。该脚本仍然运行,但它不写任何东西。
我已经玩了很多次并且似乎已经尝试了所有方法 - 但我无法弄清楚。