如何通过ajax将textarea中的换行符传递给PHP

时间:2018-03-13 10:21:32

标签: php jquery ajax

我使用wordpress的后端允许客户填写表单并在电子邮件中发送文本区域的内容。

我的问题是,当我单击send时,文本区域中的字符串将转换为Line1%0ALine2%0ALine3(作为encodeURIComponent()的结果)并将其发布到我的PHP函数。当这是在电子邮件中发出的,这就是我得到的。

我知道我需要以某种方式对此进行解码/编码,我认为我几乎就在那里。

到目前为止,我的JS看起来像这样。

tinyMCE.triggerSave();
var messagetext = jQuery('textarea#emailMessage').val();
var newEmailForm = [];
var email = jQuery('input.email').val();
var title = jQuery('input.title').val();
var emailMessage = encodeURIComponent(messagetext);
newEmailForm.push([email,title,emailMessage]);

var datastring = {
        newEmailForm: newEmailForm,
        properties: properties
    };

jQuery(function(){
        jQuery.ajax({
            type:'POST',
            data:{
                action: 'elegantSendEmail',
                datastring: datastring
            },
            url: ajaxurl,
            success: function(data){
                alert(data);
            }
        })
    })

使用encodeURIComponent()发布消息文本,如下所示:Line1%0ALine2%0ALine3

我的PHP看起来像。

function elegantSendEmail() {

  $to = $_POST['datastring']['newEmailForm'][0][0];
  $title = $_POST['datastring']['newEmailForm'][0][1];
  $messagetext = $_POST['datastring']['newEmailForm'][0][2], true);
  $properties = $_POST['datastring']['properties'];

  //Send the email and get a report back
  $sent = elegeantSend($to,$messagetext,$properties);

}

我只是不知道如何将字符串转换为<br>\n等。

TIA

2 个答案:

答案 0 :(得分:0)

你可以使用 rawurldecode 函数它会在php中解码,用 encodeURIComponent()

编码

答案 1 :(得分:-1)

您可以使用str_replace

示例:

$messagetext = $_POST['datastring']['newEmailForm'][0][2], true);
$convertedMessageText = str_replace('%0A', "\n", $messagetext);

PS :这是用于将%0A替换为新行(如问题),而不是其他