错误的学习编码语言观点:语言语法不用记,多练习就可以了。   应该是死记住,然后加强练习以免忘记。以及在练习中加强理解。试着想“为什么是这样的语法习惯”。
PHP提供了8种数据类型。4种是标量型(单值)的:整型、浮点型、字符串和布尔值;两种是复合型(集合)的:数组和对象。两种特殊类型:资源和NULL

静态变量在所有对该函数的调用中是共享的,而非静态变量会在函数结束时被销毁。
嵌套声明并没有限制内部定义函数的可见性。除非外部函数被调用,否则内部函数无法被调用。

字符串的定义:
字符串可以是任意长度的字符序列。字符串直接量用单引号或双引号分隔。

变量用双引号括起来,单引号中的变量符号不解析。
测试两个字符串是否相等,使用==比较操作符: if($a==$b) {echo "a and b are equal"}
使用is_string()函数测试一个值是否为字符串:if(is_string($x)){//}
PHP提供了操作符和函数来对字符串进行比较、拆分、合并、查找、替换和去除首尾空格,也有许多特定的字符串函数来处理HTTP、HTML和SQL编码。
变量的替换:
有两种方法把变量替换到字符串中:
1、双引号包含
$who='kilroy';
$where='here';
echo "$who was $where";
2、大括号包含。这种方法可以用于消除歧义或替换数组查找。大括号的经典作用是把变量名从周围的文本中分隔出来。
$n=12;
echo "You are the {$n}th person";
You are the 12th person
如果没有大括号的话,PHP就会尝试打印出变量$nth的值。
和一些shell环境不同,在PHP字符串中变量不会重复解析,而只处理在双引号字符串中的解析,然后把其结果作为字符串的值。
$bar='this is not printed';
$foo='$bar';//单引号
print("$foo");//双引号
$bar
用单引号括起来的字符串并不替换变量:
$name='Fred';
$str='Hello,$name';//用单引号括起来
echo $str;
Hello,$name
特殊符号转义:
在用单引号括起来的字符串中唯一可用的转义序列是\'(把单引号放在用单引号括起来的字符串中)、\\(把一个反斜杠放在用单引号括起来的字符串中)。任何其他的反斜杠只能被解释为一个反斜杠:
$name='Time O\'Reilly'; //转义的单引号
echo $name;
Time O'Reilly
$path='C:\\WINDOWS';   //转义的反斜杠
echo $path;
C:\WINDOWS
$nope='\n';            //不是转义序列
echo $nope;
\n  
用双引号括起来的字符串将会进行变量解析并且允许使用许多转义序列。\"(双引号)、\n(换行符)、\r(回车)、\t(制表符)、\\(反斜杠)、\$(美元符号)、\{、\}、\[、\](左右大括号与中括号)、\0 throuth \777(用八进制表示的ASCII字符)、\x0 through \xFF(用十六进制表示的ASCII字符)
如果在用双引号括起来的字符串中发现一个未知的转义序列,就忽略这个转义序列(如果警告级设置为E_NOTICE,就会为这样的未知序列产生一个警告):
$str="What is \c this?"; //未知的转义序列
echo $str;
What is \c this?

字符串的打印:有4种方法可以向浏览器发送输出内容。echo结构让你一次输出许多值,而print()只能输出一个值。printf()函数通过把值插入到模板中来建立一个格式化的字符串。print_r()函数利于调试——它用更容易读懂的方式来打印数组、对象和其它东西的内容。         echo的大部分行为看起来像是一个函数,但其实echo是一个语言结构(language construct)。这意味着可以省略小括号,所以下面两个语句是等价的:
echo "Printy";
echo ("Printy");  //也是合法的
可以通过逗号分隔来指定打印多个项:
echo "First","second","third";
Firstsecondthird
在尝试echo多个值时,使用小括号会产生语法错误:
echo("Hello","world");      //这是一个语法错误
因为echo并不是真正的函数,所以不可以把它作为表达式的一部分使用:
if(echo("test")){echo ("it worked!");}
通过使用函数print()或printf(),很容易补救这种错误。
print():函数print()发送一个值(它的参数)给浏览器。如果字符串成功显示则返回true,否则返回false(例如,用户在页面提交之前按下Stop按钮)
if (!print("Hello,world")){
    die("you're not listening to me!");
}
Hello,world

printf():函数printf()通过把值传入到模板中(即定义好的字符串格式)来输出一个字符串。它源自标准C库中的同名函数。
函数sprintf()和printf()的参数相同,但只是返回生成的字符串而不打印出来。这可以让你把字符串保存到一个变量中供稍后使用:
$date=sprintf("%02d/%02d/%04d",$month,$day,$year);//现在我们可以在任何一个需要日期的地方将类型说明符%的替换成$date的值。

print_r()结构可以聪明地显示传给它的东西,而不是像echo和print()那样把所有的都转换为字符串。使用print_r(),字符串和数字都简单地打印出来,而数组则以括起来的键和值得列表形式显示,并以Array开头。
在数组中使用print_r()可以将移动内部的迭代器指针指到数组里最后一个元素的位置。

访问单个字符:
函数strlen()返回字符串中的字符数,即字符长度:
$string='Hello,world';
$length=strlen($string); //$length为12
可以在字符串中使用字符串偏移量语法来定位单个字符:
$string='Hello';
for($i=0;$i<strlen($string);$i++){
    printf("The %dth charactor is %s\n",$i,$string{$i});
}
The 0th character is H
The 1th character is e
The 2th character is l
The 3th character is l
The 4th character is o

整理字符串
通常,我们从文件或用户得到的字符串在使用前需要整理(Cleaning)。原始数据的两个普遍问题是没用的空白符号(如空格、换行)的存在和不正确的字母大小写。

删除空白符
可以使用函数trim()、ltrim()、rtrim()删除字符串开头或结尾的空白符(whitespace):
$trimmed=trim(string[,charlist]);
$trimmed=ltrim(string[,charlist]);
$trimmed=rtrim(string[,charlist]);
trim()返回删除首尾空白的字符串。ltrim()(l是指left) 只删除字符串开头的空白。rtrim()(r是指right)只删除字符串末尾的空白。可选参数charlist是一个指定所有要删除字符的字符串。默认情况下要删除的字符有:空格(" ")、制表符("\t")、换行("\n")、回车("\r")、字符("\0")、纵向列表符("\x0B")

改变大小写
PHP有一些函数用于改变字符串的大小写:strtolower()和strtoupper()操作整个字符串,ucfirst()只操作字符串的第一个字母,ucwords()则操作字符串中每个单词的第一个字母。每一个函数都把字符串作为参数来执行,并适当地改变大小写,然后返回字符串的拷贝。例如:
$string1="FRED flintston";
$string2="barney rubble";
print(strtolower($string1)); //fred flintston
print(strtoupper($string1)); //FRED FLINTSTON
print(ucfirst($string2));    //Barney rubble
print(ucwords($string2));    //Barney Rubble

PHP字符串——简单应用的更多相关文章

  1. FJ的字符串-简单递归

    FJ的字符串-简单递归 问题描述FJ在沙盘上写了这样一些字符串: A1 = “A” A2 = “ABA” A3 = “ABACABA” A4 = “ABACABADABACABA” … … 你能找出其 ...

  2. python反转字符串(简单方法)及简单的文件操作示例

    Python反转字符串的最简单方法是用切片: >>> a=' >>> print a[::-1] 654321 切片介绍:切片操作符中的第一个数(冒号之前)表示切片 ...

  3. HDOJ/HDU 2567 寻梦(字符串简单处理)

    Problem Description 每个人的童年都可能梦想过自己成为一个英雄,尤其是喜欢武侠的男生,Yifenfei也不例外. 童年的他常常梦想自己能成为一个绝世英雄,手拿一把灿灿发亮的宝剑,手挽 ...

  4. POJ 1200 Crazy Search(字符串简单的hash)

    题目:http://poj.org/problem?id=1200 最近看了一个关于hash的问题,不是很明白,于是乎就找了些关于这方面的题目,这道题是一道简单的hash 字符串题目,就先从他入手吧. ...

  5. java---正则表达式的字符串简单实用及扩展链接

    一:什么是正则表达式 1.定义:正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的 ...

  6. 手写Java的字符串简单匹配方法IndexOf()

    简单的字符串模式匹配算法,可使用KMP进行优化 /** * @param s1 母串 * @param s2 子串 * @return */ public static int myIndexOf(S ...

  7. java字符串简单介绍

    String:String对象初始化之后不可变线程安全简单的字符串操作使用String效率更高 StringBuffer:StringBuffer对象初始化之后可改变线程安全频繁的字符串操作可以使用S ...

  8. HDU-2054.A==B?(字符串简单处理)

    这道题......被我各种姿势搞死的... 本题大意:给出两个数A和B,判断A和B是否相等,对应输出YES or NO. 本题思路:本题我有两种思路,第一种是直接去除前导零和后导零然后稍加处理比较字符 ...

  9. OI字符串 简单学习笔记

    持续更新qwq KMP 其实是MP啦qwq 就是先自己匹配自己得到状态图,然后再在上面进行模式串的匹配. nxt数组返回的是以该节点结尾的,最长的,在前面出现过的,不相交的,字符串的最靠右的,末位位置 ...

随机推荐

  1. 关于在浏览器中测试cordova plugin的注意事项。

    本文介绍有关Ionic Native能力的注意事项: 1)按官方文档安装对应的cordova插件,比如:ionic cordova plugin add cordova-plugin-datepick ...

  2. [转]C#进阶系列——WebApi 接口参数不再困惑:传参详解

    本文转自:http://www.cnblogs.com/landeanfen/p/5337072.html#_label1_2 阅读目录 一.get请求 1.基础类型参数 2.实体作为参数 3.数组作 ...

  3. PowerDesigner最基础的使用方法入门学习(转载)

    来源:http://www.cnblogs.com/biehongli/p/6025954.html 1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其他的概念知识可自行学习 ...

  4. [PHP] 重回基础(IO流)

    IO流用来处理设备之间的数据传输 java对数据的操作是通过流的方式 java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流,输出流 字符流 抽象基类:Rea ...

  5. Oracle安装后遇到错误:The Network Adapter could not establish the connection

    http://note.youdao.com/noteshare?id=e6baee7ea7b7f60d7a265124e2bdd46c&sub=988945C6DDE843D5A7D6588 ...

  6. 使用springcloud gateway搭建网关(分流,限流,熔断)

    Spring Cloud Gateway Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 ...

  7. day_02mysql表的约束设计

    首先我们复习第一天的主要内容: sql分类 知识概述 1) DDL(Data Definition Language)数据定义语言 用来定义数据库对象:数据库,表,列等.关键字:create, dro ...

  8. 使用dom4j处理xml操作xml数据

    使用dom4j处理xml操作xml数据 示例代码: public class TestDom4j { public static void main(String[] args) { String x ...

  9. IntelliJ IDEA创建spring-boot项目

    开发环境: jdk版本:JDK8 maven版本:maven-3.5.2 开发工具:Itellij IDEA 2017.1 前提条件:已安装以上软件并配置好jdk和maven的环境变量 创建步骤: 点 ...

  10. [js高手之路]Node.js实现简易的爬虫-抓取博客所有文章列表信息

    抓取目标:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要实现的功能: 抓取博客所有的文章标题,超链接,文章摘要,发布时间 需要用到的库: node.js自带的h ...