本文目录一览:
- 1、请问php 中什么函数可以过滤掉这个笑脸(>_
- 2、求php过滤ios的Emoji表情的方法,如果字符串中包含Emoji表情就删除。
- 3、PHP如何过滤★等特殊符号
- 4、php怎样过滤掉特殊字符啊 ☺
- 5、PHP字符串中特殊符号的过滤方法介绍
请问php 中什么函数可以过滤掉这个笑脸(>_
//把 (_)过滤成空就行了。
?php
echo str_replace("(_)","","Hello (_)!");
?
求php过滤ios的Emoji表情的方法,如果字符串中包含Emoji表情就删除。
网上已经有开源的了! 你参考下
iOS 5.0之前,苹果都是采用3个字节来承接 emoji 表情,Java 的普通 char 可以支持显示。但 iOS 5.0 之后, 苹果升级了系统自带的 emoji 表情输入法,用的 Unicode 6 标准来统一,是采用4个 bytes 来承接一个 emoji 表情。如果不做处理的话,这种表情直接存储到 mysql5.5 以下的数据库是会报错的。就像这两个表情一样:口口, 在 Windows 8 以下估计都不支持显示,可能会显示成框框,可能压根就是空白, 你可以在 Mac 中使用Safari 浏览器中,就可以看到。经过测试,在 Mac 就算用 Chrome 浏览器(Version 25.0.1364.172)也是不行的。
这种数据在 Mysql 5.5 之前,UTF-8 支持1-3个字节的编码,从 Mysql5.5 开始后,可以支持4个字节的 UTF 编码,但要特殊标记。修改 Mysql 相应存储字段为 utf8mb4 。修改语句如下:
1 ALTER TABLE table_name
2 MODIFY COLUMN content varchar(500) CHARACTER
3 SET utf8mb4 COLLATE utf8mb4_unicode_ci
4 DEFAULT NULL COMMENT 'content of message';
在某种业务情景下,我们可以选择过滤掉这种“非法”的字符。我采用的方式是,在字符上面做操作,下面是Java示例代码,核心的代码附上,应该是 无法直接下载就能够编译,你得小小的做一些微调,没有额外的依赖:
01 public class EmojiFilter {
02
03 /**
04 * 检测是否有emoji字符
05 * @param source
06 * @return 一旦含有就抛出
07 */
08 public static boolean containsEmoji(String source) {
09 if (StringUtils.isBlank(source)) {
10 return false;
11 }
12
13 int len = source.length();
14
15 for (int i = 0; i len; i++) {
16 char codePoint = source.charAt(i);
17
18 if (isEmojiCharacter(codePoint)) {
19 //do nothing,判断到了这里表明,确认有表情字符
20 return true;
21 }
22 }
23
24 return false;
25 }
26
27 private static boolean isEmojiCharacter(char codePoint) {
28 return (codePoint == 0x0) ||
29 (codePoint == 0x9) ||
30 (codePoint == 0xA) ||
31 (codePoint == 0xD) ||
32 ((codePoint = 0x20) (codePoint = 0xD7FF)) ||
33 ((codePoint = 0xE000) (codePoint = 0xFFFD)) ||
34 ((codePoint = 0x10000) (codePoint = 0x10FFFF));
35 }
36
37 /**
38 * 过滤emoji 或者 其他非文字类型的字符
39 * @param source
40 * @return
41 */
42 public static String filterEmoji(String source) {
43
44 if (!containsEmoji(source)) {
45 return source;//如果不包含,直接返回
46 }
47 //到这里铁定包含
48 StringBuilder buf = null;
49
50 int len = source.length();
51
52 for (int i = 0; i len; i++) {
53 char codePoint = source.charAt(i);
54
55 if (isEmojiCharacter(codePoint)) {
56 if (buf == null) {
57 buf = new StringBuilder(source.length());
58 }
59
60 buf.append(codePoint);
61 } else {
62 }
63 }
64
65 if (buf == null) {
66 return source;//如果没有找到 emoji表情,则返回源字符串
67 } else {
68 if (buf.length() == len) {//这里的意义在于尽可能少的toString,因为会重新生成字符串
69 buf = null;
70 return source;
71 } else {
72 return buf.toString();
73 }
74 }
75
76 }
77 }
还有优化的空间,但是已经能够满足大多数情况的需求,附上单元测试(JUnit4):
01 public class EmojiFilterTest {
02
03
04 /**
05 * 测试emoji表情
06 */
07 @Test
08 public void fileterEmoji() {
09 String s = "body口口213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)!" +
10 "(@*$@(!)@*)!$!)@^%@(!. 口口口], ";
11 String c = Utils.filterEmoji(s);
12 assertFalse(s.equals(c));
13 String expected = "body213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
14 "!(@*$@(!)@*)!$!)@^%@(!. ], ";
15 assertEquals(expected, c);
16 // assertSame(c, expected);
17 assertSame(expected, "body213这是一个有各种内容的消息, Hia Hia Hia !!!! xxxx@@@...*)" +
18 "!(@*$@(!)@*)!$!)@^%@(!. ], ");
19 assertSame(c, Utils.filterEmoji(c));
20 }
21
22 }
PHP如何过滤★等特殊符号
我的程序是这样编写的,相信你一看就懂:
if(preg_match("/[ '.,:;*?~`!@#$%^+=)({}]|\]|\[|\/|\\\|\"|\|/",$user)){
echo '不要在名字里面整些特殊符号,请只使用字母、数字和汉字,当然要你的浏览器要选简体中文GB2312哟,千万不要选繁体、中文HZ等。返回修改后,再来,我等你哟!';
exit();
}
php怎样过滤掉特殊字符啊 ☺
过滤掉特殊字符,可以考虑使用字符串替换的方法,在php中替换字符效率最高也是最简单字符替换函数str_replace函数。
使用方法:str_replace(find,replace,string,count)
参数说明:
find 必需。规定要查找的值。
replace 必需。规定替换 find 中的值的值。
string 必需。规定被搜索的字符串。
count 可选。一个变量,对替换数进行计数。
实例:
str_replace("iwind", "kiki", "i love iwind, iwind said");
将输出 "i love kiki, kiki said"
当然你也可以采取正则替换的方法,该函数是preg_replace
PHP字符串中特殊符号的过滤方法介绍
本篇文章主要是对PHP字符串中特殊符号的过滤方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
有时候我们会遇到过滤字符串中特殊字符的问题,本文提供了一个处理特殊字符串的方法,可能有遗漏,如果读者发现了可以
代码如下:
function
strFilter($str){
$str
=
str_replace('`',
'',
$str);
$str
=
str_replace('·',
'',
$str);
$str
=
str_replace('~',
'',
$str);
$str
=
str_replace('!',
'',
$str);
$str
=
str_replace('!',
'',
$str);
$str
=
str_replace('@',
'',
$str);
$str
=
str_replace('#',
'',
$str);
$str
=
str_replace('$',
'',
$str);
$str
=
str_replace('¥',
'',
$str);
$str
=
str_replace('%',
'',
$str);
$str
=
str_replace('^',
'',
$str);
$str
=
str_replace('……',
'',
$str);
$str
=
str_replace('',
'',
$str);
$str
=
str_replace('*',
'',
$str);
$str
=
str_replace('(',
'',
$str);
$str
=
str_replace(')',
'',
$str);
$str
=
str_replace('(',
'',
$str);
$str
=
str_replace(')',
'',
$str);
$str
=
str_replace('-',
'',
$str);
$str
=
str_replace('_',
'',
$str);
$str
=
str_replace('——',
'',
$str);
$str
=
str_replace('+',
'',
$str);
$str
=
str_replace('=',
'',
$str);
$str
=
str_replace('|',
'',
$str);
$str
=
str_replace('',
'',
$str);
$str
=
str_replace('[',
'',
$str);
$str
=
str_replace(']',
'',
$str);
$str
=
str_replace('【',
'',
$str);
$str
=
str_replace('】',
'',
$str);
$str
=
str_replace('{',
'',
$str);
$str
=
str_replace('}',
'',
$str);
$str
=
str_replace(';',
'',
$str);
$str
=
str_replace(';',
'',
$str);
$str
=
str_replace(':',
'',
$str);
$str
=
str_replace(':',
'',
$str);
$str
=
str_replace(''',
'',
$str);
$str
=
str_replace('"',
'',
$str);
$str
=
str_replace('“',
'',
$str);
$str
=
str_replace('”',
'',
$str);
$str
=
str_replace(',',
'',
$str);
$str
=
str_replace(',',
'',
$str);
$str
=
str_replace('',
'',
$str);
$str
=
str_replace('',
'',
$str);
$str
=
str_replace('《',
'',
$str);
$str
=
str_replace('》',
'',
$str);
$str
=
str_replace('.',
'',
$str);
$str
=
str_replace('。',
'',
$str);
$str
=
str_replace('/',
'',
$str);
$str
=
str_replace('、',
'',
$str);
$str
=
str_replace('?',
'',
$str);
$str
=
str_replace('?',
'',
$str);
return
trim($str);
}