【发布时间】:2013-05-25 22:12:30
【问题描述】:
我有一个contenteditable 元素,onblur 将它的值发布到服务器。
因为它是contenteditable,所以在重复输入空格时,它会添加 ,而不是空格,因此生成的HTML可以是:
Testing title middle entry
当使用.text() 从元素中检索时,看起来像正常间隔(下划线标记空格):
Testing_title___middle___entry____
我将这个.text() 值发布到我的PHP 后端。我在那里完成了保存过程。因为我需要修剪字符串,所以基本的trim($title) 没有剪掉它。
而且,我似乎无法理解它。
我也试过这个How to decode Unicode escape sequences like "\u00ed" to proper UTF-8 encoded characters?,也没有用。
Chrome 网络检查器,显示它通过此编码数据发送:
Testing+title+%C2%A0+middle+%C2%A0+entry+%C2%A0+%C2%A0
implode(', ', unpack('C*', $title)) 返回:
84, 101, 115, 116, 105, 110, 103, // Testing
32, // space
116, 105, 116, 108, 101, // title
32,
194, 160, //
32,
109, 105, 100, 100, 108, 101, // middle
32,
194, 160,
32,
101, 110, 116, 114, 121, // entry
32,
194, 160,
32,
194, 160
$title 最终只是一个$_POST['title']。
如何从这个字符串中删除所有空格?
最后,解决方案是:
$title = preg_replace('/\s/iu', ' ', $title)
【问题讨论】:
-
在发送工作之前是否在客户端修剪它(使用
$.trim)? -
是的,客户端修剪工作,但这并没有改变我希望这发生在服务器端的事实。此外,question here 透露,客户端
$.trim()的 IE (MSAjax) 中存在错误。