このコードに問題があり、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 メソッドを使用して電子メールを出力します。
2 番目の if 文が気になります。If は最初の if ステートメントと同じことを行うべきですが、そうではありません。長さは正しい長さです(私が確認しました)。タイプは正しいタイプです(私はチェックしました)。しかし、それをエコーしようとすると、何も起こりません。スクリプトは引き続き実行されますが、何も書き込まれません。
私はそれをかなりいじって、すべてを試したようです-しかし、私はそれを理解することができません.