我不确定为什么我的数组中的第一个值会添加<p>
个标记,其余值在li
个标记内很好用。
//user posted variable
$checks = $_POST['personalization_result'];
//handling the form data and outputting it into a list
if(!empty($checks)){
$checkValues = array_values($checks);
$checkString = implode('<li style="list-style: none;">'.get_post_meta($post->ID, '_moon_question', true).'', $checkValues);
}
// I need this filter so it can parse the html in the email
add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
//E-mailing my form data here
$sent = wp_mail($to, $subject, $checkString, $headers);
这样可以发送电子邮件,但出于某种原因它看起来像这样。
<p>1</p> //this is the first value it should look like below
<li style="list-style: none;">Suits1</li>
<li style="list-style: none;">Suits1</li>
<li style="list-style: none;">Suits1</li>
<li style="list-style: none;">Suits0</li>
<li style="list-style: none;">Suits0</li>
我希望我能解决这个问题,但坦率地说我不确定问题出在哪里?我觉得它里面的implode
也许HTML没有正确写好?
答案 0 :(得分:1)
Implode
正在添加给定String的所有出现的给定String BETWEEN。这意味着,您提供的输出COULT NOT不是由您提供的脚本生成的,因为在任何地方都没有</li>
。
除了事实,没有人知道,get_post_meta($post->ID, '_moon_question', true)
会返回什么,你很可能想要生成一个列表?
然后要去的代码就是这样:
注意:第一个Openig和LAST结束标记需要分开,因为implode只会添加IN BETWEEN。 因此,“在字符串之间”需要以结束标记开头,并以开头标记结束。
echo "<li>".implode("</li><li>", $myArray)."</li>";