【发布时间】:2017-06-03 05:59:48
【问题描述】:
我在 php 中有一个 for 循环,它一遍又一遍地回显相同的文本并通过电子邮件发送给我。我只用它来检查代码是否每天都被执行,结果是什么。
这是代码的简短版本:
for ($x = 0; $x < $max; $x++) {
if (strlen($var)== 9) {
// code to send things via curl has been removed
$thismessage = " " . $var. " some text <b>bold text</b> some text " . $var2. "<br>";
$message = $message . $thismessage;
} else {
$thismessage = "other text<br>";
//$message = $message . $thismessage;
}
}
然后我将$message 发送到我的电子邮件。此 php 文件每天运行,以向有生日的客户发送 SMS。发送给我的消息基本上是一条线,说此客户 ($var) 今天过生日,并收到了此电话号码 ($var2) 的消息(粗体)。
很多时候,一切正常。一直以来,客户都会收到他们的消息,因此每个代码都在执行。令我惊讶的是,我在电子邮件中得到的结果。
通常我会得到这样的结果(这是我所期望的):
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本一些文本 var2
但我经常会得到这样的结果:
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些粗体文本 一些文本 var2
var1 一些粗体文本 一些文本 var2
一旦我得到这个:
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
var1 一些文本 粗体文本 一些文本 var2
所以看起来</b> 有时会被跳过或添加一个空格,因此它不会呈现为代码。但是当它在(比如说)第 3 行被跳过时,它也会在以下所有行中被跳过。我很惊讶这似乎是随机发生的,因为这是一个for 循环,它是重复使用的相同代码,所以代码中没有错误(或者至少我认为)。
我认为 php 和 html 每次都应该按照逻辑和相同的方式进行操作。
我的问题是:
在php中回显html会不会导致html输出出错? 还是我只是做错了什么?
编辑这是代码的长版本
for ($x = 0; $x < $fjoldi; $x++) {
$kennitala = $complete[$x][kennitala];
if (strlen($kennitala)== 9) {
$kennitala = "0" . $kennitala;
}
if (substr($kennitala, 0, 4) == date("dm")) {
$simanumer = $complete[$x][simi];
$url = 'https:....';
$url = $url . '&T=Text to send';
$url = $url . '&unicode=1';
$execute = curl_init();
curl_setopt($execute, CURLOPT_URL, $url);
curl_exec($execute);
curl_close ($execute);
$thismessage = " " . $kennitala . " á afmæli í dag og <b>fékk sms</b> í númer " . $simanumer . "<br>";
echo $thismessage;
$message = $message . $thismessage;
} else {
$thismessage = " " . $kennitala . " á ekki afmæli í dag og fær ekki sms í númer " . $complete[$x][simi] . "<br>";
echo $thismessage;
//$message = $message . $thismessage;
}
}
编辑 3 - 新信息 我刚刚注意到错误似乎总是从第 13 行开始。 php中的变量是否可能包含超过特定字符数的html代码? 我还注意到通常第一个变量包含 10 个字符,第二个包含 7 个字符,但是当一个字符添加到第一个变量的一行时,我得到了 错误。
编辑 4 我注意到我的错误总是出现在 150 个字(747 个字符)之后。我得到了超过 150 个单词的结果,一切都很好,但是我得到的错误是在 150 个单词(747 个字符)之后产生的
【问题讨论】:
-
所以,在 PHP 中回显文本没有问题,所以你在某处做错了..!
-
如果您的任何变量包含 HTML(即使是意外),它可能会弄乱您想要的输出。
-
您似乎遇到了打开和关闭
<b>标签不匹配的问题。查看源代码以了解发生了什么并发布任何适用代码的“长版本”。 -
我添加了长版本的代码。变量中不应有任何 html。它们只包含数字字符串。
-
并且变量不在
<b>标签内或旁边
标签: php html email for-loop echo