您的位置:

php过滤表情符号(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);

}