php字符串长度

前端学PHP之正则表达式基础语法

末鹿安然 提交于 2019-12-29 07:29:19
前面的话   正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。在PHP中,正则表达式一般是由正规字符和一些特殊字符(类似于通配符)联合构成的一个文本模式的程序性描述。正则表达式有三个作用:1、匹配,也常常用于从字符串中析取信息;2、用新文本代替匹配文本;3、将一个字符串拆分为一组更小的信息块。本文将详细介绍PHP中的正则表达式基础语法   [注意]关于javascript的正则表达式的详细信息 移步至此 历史   在PHP中有两套正则表达式函数库,两者功能相似,只是执行效率略有差异:一套是由PCRE(Perl Compatible Regular Expression)库提供的,使用“preg_”为前缀命名的函数;另一套由POSIX(Portable Operating System Interface of Unix)扩展提供的,使用以“ereg_”为前缀命名的函数   PCRE来源于Perl语言,而Perl是对字符串操作功能最强大的语言之一,PHP的最初版本就是由Perl开发的产品。PCRE语法支持更多特性,比POSIX语法更强大   在PHP4之前,主要使用POSIX;而现在,则使用主流的PCRE   正则表达式作为一个匹配的模式,是由原子(普通字符,例如字符a到z)、特殊字符(元字符,例如*、+和?等)

PHP 字符串索引问题

心已入冬 提交于 2019-12-23 18:50:49
php 通过下标获取的是字节,而不是字符!!!! $str{$i} 获取的是第$i个字节, 而不是第$i 个字符!!! PHP可以通过 $str{0} 或者 $str[0] 的形式获取字符串的第一个字节的内容。 今天写了一段程序,出现了问题 $contentLength = mb_strlen($assessment['content']); //计算字符串的长度,以‘字符’计算 $content = ''; for($i = 0; $i <= $contentLength; $i++){ $content .= $assessment['content']{$i}; //开始我本以为通过字符串下标获取的是指定字符,结果出现了乱码,经查阅发现,字符串下标获取的是指定的字节,而不是字符。所以出现了乱码。 if($i % 10 == 0) { $content .= "\n\r"; //每10个字换行 $content .= $assessment['content']{$i}; //str_split } } echo 'content:',$content; 所以以后要特别注意了,之前还真没注意过这个问题,靠 >^_^< 那么如果我想获取第$i个字符怎么实现呢。可以这样 $contentLength = mb_strlen($assessment['content']);

PHP代码审计基础-初级篇

雨燕双飞 提交于 2019-12-22 04:17:17
对于php代码审计我也是从0开始学的,对学习过程进行整理输出沉淀如有不足欢迎提出共勉。对学习能力有较高要求,整个系列主要是在工作中快速精通php代码审计,整个学习周期5天 ,建议花一天时间熟悉php语法。 我是直接phpstudy2019一键搭建小白首选 所谓工欲善其事必先利其器,找一款适合自己的php开发工具自行百度搭建,我用的是phpstrom . 初级篇主要讲 1. php历史版本漏洞。 2. 变量配置缺陷。 3. 函数缺陷。 4. 弱语言缺陷。 PHP配置漏洞 我们要熟知php各版本漏洞 Register_globals 全局变量注册开关 在该选项为on情况下,会直接把用户GET,POST等方式提交的参数注册成全局变量并初始化值为参数对应的值 Php小于4.2.3默认打开 5.3废弃 5.4移除 Allow_url_include 是否允许包含远程文件 Php 5.2 后默认设置off Magic_quotes_gpc 魔术引号自动过滤 会自动在get post,cookie 变量对单引号,双引号,反斜杠,空字符的前面加反斜杠 缺陷不会过滤$_SERVER 变量 Php5.3后废弃,5.4移除 小于4.2.3 默认打开 Magic_quotes_runtime 魔术引号自动过滤 和上面一样 却是对从数据库取出的数据进行转义 防止二次注入 同样在5.4取消 Safe_mode

PHP 底层的运行机制与原理

眉间皱痕 提交于 2019-12-17 02:23:51
PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。 PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的UI框架。 了解PHP底层实现的目的是什么?动态语言要像用好首先得了解它,内存管理、框架模型值得我们借鉴,通过扩展开发实现更多更强大的功能,优化我们程序的性能。 1. PHP的设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响,当然,随着时代发展,PHP也早已支持多线程模型。 弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定并可能发生隐式或显式的类型转换,这种机制的灵活性在web开发中非常方便、高效,具体会在后面PHP变量中详述。 引擎(Zend)+组件(ext)的模式降低内部耦合。 中间层(sapi)隔绝web server和PHP。 语法简单灵活,没有太多规范。缺点导致风格混杂,但再差的程序员也不会写出太离谱危害全局的程序。 2. PHP的四层体系 PHP的核心架构如下图: 从图上可以看出,PHP从下到上是一个4层体系: Zend引擎:Zend整体用纯C实现,是PHP的内核部分,它将PHP代码翻译(词法

php截取字符串几个实用的函数

最后都变了- 提交于 2019-12-16 13:08:48
本文转载自: https://www.cnblogs.com/xzj8023tp/p/6430944.html 作者:xzj8023tp 转载请注明该声明。 1.substr(源字符串,其实位置[,长度])-截取字符串返回部分字符串 <? php $str = "phpddt.com" ; echo substr ( $str , 2 ); //pddt.com echo substr ( $str , 2 , 3 ); //pdd echo substr ( $str , - 2 ); //om 负数从结尾开始取 ?> 但是当你截取中文字符串的时候很容易出现乱码,因为一个汉字是两个字节,而一个英文字母是一个字节。解决办法如下: 2.mb_substr(),使用方法和substr相同,不过要开启php.ini里面extension=php_mbstring.dll扩展,不用担心,一般的空间商 都会开启这个扩展的。 <? php echo mb_substr ( "php点点通" , 1 , 3 , "UTF-8" ); //hp点 ?> 代码如下: substr(string,start,length) 其中start的参数 正数 - 在字符串的指定位置开始 负数 - 在从字符串结尾的指定位置开始 0 - 在字符串中的第一个字符处开始 ***********************

PHP中String字符串处理函数完整版

ⅰ亾dé卋堺 提交于 2019-12-15 20:06:33
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 文章来源:PHP开发学习门户 我的原创地址: http://www.phpthinking.com/archives/602 开发习惯常用字符串处理函数梳理: strtr() 转换字符串中特定的字符。 substr() 返回字符串的一部分。 strstr() 搜索字符串在另一字符串中的首次出现(对大小写敏感) str_replace() 替换字符串中的一些字符。(对大小写敏感) strcmp() 比较两个字符串。(对大小写敏感) strlen() 返回字符串的长度。 substr_count() 计算子串在字符串中出现的次数。 substr_replace() 把字符串的一部分替换为另一个字符串 implode() 把数组元素组合为一个字符串。 explode() 把字符串用指定分隔符分割成一个数组 json_encode() 将数组解析成json形式的字符串 json_decode() 将json字符串解析成数组元素 String字符串处理函数详细列表: addcslashes() 在指定的字符前添加反斜杠。 addslashes() 在指定的预定义字符前添加反斜杠。 bin2hex() 把 ASCII 字符的字符串转换为十六进制值。 chop() rtrim() 的别名。 chr() 从指定的 ASCII

PHP底层运行机制与原理

China☆狼群 提交于 2019-12-15 16:08:38
PHP用起来感觉很简单方便,但是要精通PHP,熟悉底层的工作原理也有必要的。 1 PHP的设计理念及特点 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响,当然,时代发展,PHP也早已支持多线程模型。 弱类型语言:和C/C++、Java、C#等语言不同,PHP是一门弱类型语言。一个变量的类型并不是一开始就确定不变,运行中才会确定并可能发生隐式或显式的类型转换,这种机制的灵活性在web开发中非常方便、高效。 引擎(Zend)+组件(ext)的模式,降低内部耦合。 中间层(sapi),隔绝web server和PHP。 语法简单灵活,没有太多规范。 2 PHP的核心架构 PHP核心架构如下图,从下到上可以简单分为四层体系: Zend引擎:纯C实现,是PHP的内核部分,它将PHP代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。 Extensions:围绕着Zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array 系列)、标准库等都是通过extension来实现。 Sapi :全称是Server

PHP 学习笔记

风流意气都作罢 提交于 2019-12-14 19:07:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.常用方法 ini_set('display_errors',1); // 如果出现错误,将错误信息在页面显示出来 error_reporting(E_ALL | E_STRICT);// 显示所有的错误信息 // 去除字符串中的换行符 $posting = nl2br($_POST['posting']); // 将特定html标签转换为实体版本 $posting = htmlspecialchars($_POST['posting'],特定的html标签); // 将所有html标签转换为实体版本 $posting = htmlentities($_POST['posting']); // 移除所有的html和php标签 $posting = strip_tags($_POST['posting']); // 将任意值传送到php脚本(将值完全转换为适合作为url的一部分传输) urlencode(); 注意: PHP中字符串的连接用 " . " PHP中如果用双引号来连接变量,只会将其视为一个字符串,连接变量用单引号 如:$name1 = "test"; $name2 = "value"; $name = "$name1 $name2"; $nameValue = '$name1 $name2'; 其中

php 字符串常用方法

て烟熏妆下的殇ゞ 提交于 2019-12-14 18:51:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.判断一个字符串的长度:int strlen(string $string) 判断一个中文字符串长度 mb_strlen() 判断一盒字符串由多少个单词组成(通常以空格划分单词)str_word_count() 2.字符串截取和查找 string substr ( string $string , int $start [, int $length ] ) 从字符串中获取其中的一部分 string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] ) string strrchr ( string $haystack , mixed $needle ) 查找字符串在另一个字符串中第一次出现的位置,并返回从该位置到字符串结尾的所有字符 subchr():同strstr() stristr():同strstr(),但不区分大小写 查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符 strpos():查找字符串中子串的位置,返回的位置从下标0开始 strrpos():逆向查找字符串中子串的位置。 3、字符串转化 trim():去除空格; ltrim():只从开始处去除空格; rtrim

PHP_常用字符串处理函数_简介

北城以北 提交于 2019-12-14 18:38:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> addcslashes — 为字符串里面的部分字符添加反斜线转义字符 addslashes — 用指定的方式对字符串里面的字符进行转义 bin2hex — 将二进制数据转换成十六进制表示 chop — rtrim() 的别名函数 chr — 返回一个字符的ASCII码 chunk_split — 按一定的字符长度将字符串分割成小块 convert_cyr_string — 将斯拉夫语字符转换为别的字符 convert_uudecode — 解密一个字符串 convert_uuencode — 加密一个字符串 count_chars — 返回一个字符串里面的字符使用信息 crc32 — 计算一个字符串的crc32多项式 crypt — 单向散列加密函数 echo — 用以显示一些内容 explode — 将一个字符串用分割符转变为一数组形式 fprintf — 按照要求对数据进行返回,并直接写入文档流 get_html_translation_table — 返回可以转换的HTML实体 hebrev — 将Hebrew编码的字符串转换为可视的文本 hebrevc — 将Hebrew编码的字符串转换为可视的文本 html_entity_decode — htmlentities ()函数的反函数