我有一个contenteditable
元素,onblur
将其值发布到服务器。
因为它是contenteditable
,在重复空格条目而不是空格时,它会添加
,因此生成的HTML可以是:
Testing title middle entry
当从元素中使用.text()
检索时,看起来像通常间隔(下划线标记空格):
Testing_title___middle___entry____
我发布到我的PHP后端的.text()
值。在那里,我经历了保存程序。因为我需要剪裁字符串,所以基本的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)
答案 0 :(得分:1)
如何在开始修剪之前用空格替换所有
?
$text= str_replace(' ', ' ', $text)
或者,如果您想保持unicode安全,可以使用mb_eregi_replace
http://www.php.net/manual/en/function.mb-eregi-replace.php
编辑 - 第二种方法:
根据这个答案(https://stackoverflow.com/a/13992998/486780)
194 160是NO-BREAK SPACE代码点的UTF-8编码(与HTML调用的代码点相同)。
所以它真的不是一个空间,即使它看起来像一个。 (例如,你会看到它不会自动换行。)\ s的正则表达式匹配会匹配它,但是与空格的简单比较不会。
尝试使用regexp按照上面的建议进行匹配?