【问题标题】:Split string by comma\new line in JavaScript and PHP在 JavaScript 和 PHP 中用逗号\换行符分割字符串
【发布时间】:2012-06-22 11:51:18
【问题描述】:

这快把我逼疯了。 我有一个 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 行时,只有前 2 行被替换,下一行以“n”字符发送,作为包含“\n”的单行文本。谢谢

【问题讨论】:

  • 为什么replace() 有两次?
  • 您应该以一种众所周知的易于解释的格式交换数据。 JSON 非常适合这个。
  • 感谢 dm03514,但它只是一个用逗号分隔的字符串数组

标签: php javascript string split csv


【解决方案1】:

尝试添加全局搜索标志:

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."

【讨论】:

  • 我以前也遇到过同样的问题。我必须意识到,与 php 的 str_replace() 函数不同,JavaScript 的 .replace() 方法仅对找到的第一个匹配项进行替换。除非您的模式是正则表达式并且您使用 g 修饰符,否则会告诉 JS 替换所有匹配项。
猜你喜欢
  • 2014-11-10
  • 1970-01-01
  • 2020-08-30
  • 2023-04-04
  • 2020-07-16
  • 2015-05-31
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
相关资源
最近更新 更多