textarea里输入时,开头或结尾加上Space键后,再次查询数据库并给textarea框赋值时:
$("#return").val("{$list.return}");
就会报错如本文标题。
解决方法:trim()过滤字符串两端的空格。
- 回车符\n
问题描述:一部分用户在textarea中输入文本,提交到数据库,再从数据库读取该数据并赋值给textarea时报错。
思考:既然是一部分数据读取报错,那就是输入文本的问题而不是程序写错了。
排查:因为用户输入时,中间加了Enter键。
解决方法:preg_replace()执行一个正则表达式的搜索和替换。
提交文本到数据库前这样处理,把文本中的回车替换成‘<br>‘字符:
$posts['return']=preg_replace('/\n/','<br>',$posts['return']);
从数据库里取出数据后这样处理,把字符串中的’<br>‘替换成’\n’:
$pattern = ['/<br>/', '/\n/'];
$re['return'] = preg_replace($pattern, '\n', $re['return']);
如果不执行此操作,<br>在textarea中无法显示回车。
2019-01-15再次用str_replace()代替preg_replace()成功。
???不明白的地方:无法用str_replace()代替preg_replace(),用str_replace无法把’\n’替换成‘<br>’。
2018-01-16正则表达式匹配特殊字符章节:如果要匹配一个反斜杠,必须用两个反斜杠来表示。
???不明白的地方:视图里使用函数时,’\n’要写成’\\n’
{$vo.remark|preg_replace='/\\n/',"<br>",###}