在JavaScript和PHP中用逗号\换行拆分字符串

时间:2012-06-22 11:51:19

标签: php javascript string split csv

这让我发疯了。 我有一个PHP脚本,它从MySQL获取一些数据并将其保存为一个字符串,其中的元素用逗号分隔。

JavaScript接受该字符串并用'\ n'替换逗号并将其显示在文本区域内。现在,我可以在文本区域的文本中添加新行。单击按钮时,应将字符串转换回以逗号分隔的元素,然后再次设置为PHP(通过AJAX)进行保存。问题在于JavaScript,当文本区域中有超过3行时,它无法检测到'\ n'字符。

// These are the lines of the text-area, after replacing ',' by '\n'
var textarealines=input_hidden_element.value.replace(',','\n').replace(',','\n');

// When trying to replace '\n' by ',' and send back, PROBLEM!
var AjaxRequest = WT.AjaxObject();
    AjaxRequest.open('POST', WT.AjaxLocation, true);
    AjaxRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    AjaxRequest.send('values=' + textarealines.replace('\n', ',').replace('\n', ','));
        AjaxRequest.onreadystatechange = function() {
            // Bla bla bla
        }

那么,我做错了什么?最多两行可以用逗号正确替换新行,但是当我添加多于2行时,只替换前两行,下一行以'n'字符发送,作为包含'\ n'的单行文本。感谢

1 个答案:

答案 0 :(得分:3)

尝试添加全局搜索标记:

textarealines.replace(/\n/g, ',')

请注意,/\n/g不是单引号,这意味着它是regular expression

同样,要从换行符转到逗号,请尝试:

input_hidden_element.value.replace(/,/g, '\n')

此问题与"How to replace all points in a string in JavaScript."

类似