substr

Mysql中文检索匹配与正则

血红的双手。 提交于 2020-03-19 02:51:10
今天在用sql模糊查询包含字母d的时候,发现一些不包含此字母的也被查询出来了: SELECT * FROM custom WHERE custom_realname LIKE '%d%' 查询了一下,发现以下说明: (最后修改为: SELECT * FROM custom WHERE custom_realname LIKE BINARY '%d%' ) 今天在做mysql的一个搜索的时候发现我用 select name from contact where name like '%a%'的时候出来的结果除了包含a的名字外连包含中文“新”的名字也出现在搜索结果里面,这令我想弄清楚mysql的匹配模式和规则到底是怎么样的,所以决定查查资料了解了解,另外在匹配的时候正则表达式也很常用!所以准备在这里记录我学习这两个玩意的收获! 出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。 解决办法: 1 .在建表的时候对于包含中文的字段加上“BINARY”属性,使之进行二进制比较,例如讲"name char(10)"改成"name char(10) BINARY"。但是这样你对该表的该字段进行匹配的时候是区分大小写的。 2 .如果使用源码编译MySQL

php加密解密函数

我的未来我决定 提交于 2020-03-18 08:34:40
/** *加密解密函数 *@param string $string 需要加密或者解密的函数 *@param string $operation 加密或者解密 DECODE为解密、其他为加密 *@param string $key 秘钥 *@param int $expiry 秘钥有效期 */ public static function authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) { // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙 // 加入随机密钥,可以令密文无任何规律,即便是原文和密钥完全相同,加密结果也会每次不同,增大破解难度。 // 取值越大,密文变动规律越大,密文变化 = 16 的 $ckey_length 次方 // 当此值为 0 时,则不产生随机密钥 $ckey_length = 4; // 密匙 $key = md5($key ? $key : $GLOBALS['discuz_auth_key']); // 密匙a会参与加解密 $keya = md5(substr($key, 0, 16)); // 密匙b会用来做数据完整性验证 $keyb = md5(substr($key, 16, 16)); // 密匙c用于变化生成的密文 $keyc = $ckey

PHP中实现中文字串截取无乱码的方法

好久不见. 提交于 2020-03-18 00:52:11
在PHP中,substr()函数截取带有中文字符串的话,可能会出现乱码,这是因为中西文一个字节所占有的字节数不一样,而substr的长度参数是按照字节去算的,在GB2312编码时,一个中文占2个字节,英文为1个字节,而在UTF-8编码当中,一个中文可能占有2个或3个字节,英文或半角标点占1字节。 直接使用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半。解决办法: 1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。 2、自己书写截取函数,但效率不如用mbstring扩展库来得高。 3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。 ============================= substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr()/mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。 举个例子: <?php echo mb

C++string容器详解

懵懂的女人 提交于 2020-03-17 12:38:02
3.1 string容器 3.1.1 string基本概念 本质: string是C++风格的字符串,而string本质上是一个类 string和char * 区别: char * 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。 特点: string 类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete 替换replace,插入insert string管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责 3.1.2 string构造函数 构造函数原型: string(); //创建一个空的字符串 例如: string str; string(const char* s); //使用字符串s初始化 string(const string& str); //使用一个string对象初始化另一个string对象 string(int n, char c); //使用n个字符c初始化 示例: #include <string> //string构造 void test01() { string s1; //创建空字符串,调用无参构造函数 cout << "str1 = " << s1 << endl; const char* str = "hello world"; string s2

使用ivx实现字符串格式化的经验总结

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-17 01:04:19
在案例是用中经常是用到文本组件展示一些信息,而有时这些信息有需要一些格式化的处理,比如展示手机号的时候我们可能希望如demo中这样只展示开头和尾号,而将中间四位隐藏起来,今天就说一下怎么对字符串进行这类格式化的处理。 1.数据绑定 首先demo中是建立了一个一维数组存放了几个手机号,然后以此一位数组为数据来源进行循环创建,for容器下的文本组件进行了数据绑定,并且在当前数据1后面加入了一些函数方法。这里使用的都是JavaScript的函数方法和语法。(要使用JS方法需要用数据绑定的模式) 2.正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式本身功能是十分强大的,但是要想特别熟练使用也需要很多练习。有一句话是说,当你要用正则表达式解决一个问题的时候,那你现在就拥有两个问题了。这里只简单介绍一下demo中的代码含义,对此感兴趣朋友可以自己去详细学习一下正则表达式。 当前数据1是一个字符串对象,这里是用了replace()方法,可以理解为括号中“,”后面双引号中的内容来替代两个“/”之间的内容,g表示执行全局匹配,即查找所有匹配而非在找到第一个匹配后停止。“/”之间的内容可以分为三部分,^(\d{3}),\d{4},(\d{4})$。“^

js字符串

杀马特。学长 韩版系。学妹 提交于 2020-03-16 20:54:24
charAt方法和charCodeAt方法都接收一个参数,字符串中第一个字符下标为0 charAt方法是以单字符字符串的形式返回给定位置的那个字符 charCodeAt方法获取到的不是字符而是字符编码 var str="hello world"; console.log(str.charAt(1)); 显示为第一个字符 console.log(str.charCodeAt(1)); 显示为字符编码 console.log (str.charAt(str.length-1)); 还可以使用方括号加数字索引来访问字符串中特定字符   console.log(str[1]); 字符串操作方法 concat方法 concat方法是专门用拼接字符串的 var str="hello" var res=str.concat("world"); console.log(res); console.log(str); 这说明原来字符串的值没有变 var res1=sre.concat("nihao","!"); console.log(res1); concat可以接受任意多个参数 slice方法、substring方法、substr方法 slice方法:第一个参数指定字符串开始位置,第二个参数表示子字符串最后一个字符后面的位置 substring方法:第一个参数指定字符串开始的位置

ORACLE中日期和时间函数汇总

邮差的信 提交于 2020-03-16 08:45:30
在oracle中处理日期大全 TO_DATE格式 Day: dd number 12 dy abbreviated fri day spelled out friday ddspth spelled out, ordinal twelfth Month: mm number 03 mon abbreviated mar month spelled out march Year: yy two digits 98 yyyy four digits 1998 24小时格式下时间范围为: 0:00:00 - 23:59:59.... 12小时格式下时间范围为: 1:00:00 - 12:59:59 .... 1. 日期和字符转换函数用法(to_date,to_char) 2. select to_char( to_date(222,'J'),'Jsp') from dual 显示Two Hundred Twenty-Two 3. 求某天是星期几 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 星期一 select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;

很赞的PHP字符串加密函数

情到浓时终转凉″ 提交于 2020-03-14 07:52:38
最近, 从discuz里面发现了一个很牛的加密解密函数。 此函数的厉害之处在于 可以在指定时间内加密还原字符串,超时无法还 原 这样我们就可以拿此函数来做很多用途了,比如:单点登录的token加密传输啦,临时密码啦等等 1 /* * 2 * @param string $string 原文或者密文 3 * @param string $operation 操作(ENCODE | DECODE), 默认为 DECODE 4 * @param string $key 密钥 5 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效 6 * @return string 处理后的 原文或者 经过 base64_encode 处理后的密文 7 * 8 * @example 9 * 10 * $a = authcode('abc', 'ENCODE', 'key'); 11 * $b = authcode($a, 'DECODE', 'key'); // $b(abc) 12 * 13 * $a = authcode('abc', 'ENCODE', 'key', 3600); 14 * $b = authcode('abc', 'DECODE', 'key'); // 在一个小时内,$b(abc),否则 $b 为空 15 */ 16

sql常用函数instr()和substr()

你。 提交于 2020-03-12 19:57:31
Decode decode(条件,值1,翻译值1,值2,翻译值2,...,缺省值) 该函数与程序中的 If...else if...else 意义一样 NVL 格式: NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。 注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换。 select nvl(sum(t.dwxhl),1) from tb_jhde t 就表示如果sum(t.dwxhl) = NULL 就返回 1 Oracle 在NVL函数的功能上扩展,提供了NVL2函数 NVL2 nvl2 (E1, E2, E3) 的功能为:如果E1为NULL,则函数返回E3,否则返回E2 结合 Decode 和 NVL等函数 常常结合使用,例如 select monthid,decode(nvl(sale,6000),6000,'NG','OK') from output sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1, 如果取较小值就是 select monthid,decode(sign(sale-6000),-1,sale,6000) from

字符串一些js操作方法

ぐ巨炮叔叔 提交于 2020-03-12 19:34:44
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。 substring() 方法用于提取字符串中介于两个指定下标之间的字符。 定义和用法 substring() 方法用于提取字符串中介于两个指定下标之间的字符。 语法 stringObject.substring(start,stop) 参数 描述 start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 stop 可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。 返回值 一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。 说明 substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。 如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数。 提示和注释 重要事项:与 slice(