欢迎来到PHP字符串变装秀!在这里,字符串就像百变星君,能随意变换造型,玩转各种花样。准备好你的魔法棒(键盘),让我们开始字符串的奇幻之旅吧!
2.3.1 字符串的诞生:四种创世法则
1. 单引号派 - 保守派代表
$simpleString = '我是普通的字符串';
$varWillNotWork = '变量$simpleString不会被解析';
单引号字符串就像固执的老教授:
- 不解析变量
- 只认识两个转义字符:\'和\\
- 性能稍好(因为不用检查变量)
2. 双引号派 - 自由派代表
$name = "PHP";
$dynamicString = "Hello $name! 2+2=${2+2}";
双引号字符串像热情的社交达人:
- 解析变量(用花括号{}可以更清晰)
- 支持所有转义字符:\n换行、\t制表符等
- 可以玩变量变量:"${$var}"
3. Heredoc - 文艺青年
$longText = <<<"EOD"
这里可以写多行内容,
变量$name会被解析,
直到遇到结束标识符EOD(必须单独一行,不能缩进!)
EOD;
Heredoc就像双引号的加长版豪华车,适合写大段文本。
4. Nowdoc - 佛系青年
$staticText = <<<'EOT'
这里也是多行,
但变量$name不会被解析,
就像单引号字符串的加强版
EOT;
Nowdoc是单引号的远房表亲,适合写不需要解析的大段文本。
2.3.2 字符串操作:七十二变
1. 连接运算符:字符串的红娘
$greeting = "Hello" . " " . "World!"; // 点号连接
$name = "Alice";
$welcome = "Welcome, " . $name . "!"; // 连接变量
2. 常用字符串函数
长度检测:strlen()
$length = strlen("PHP"); // 3
$zhLength = strlen("中文"); // 6(一个中文UTF-8占3字节)
注意:对于中文等多字节字符,要用mb_strlen()
查找子串:strpos()
$position = strpos("I love PHP", "PHP"); // 7
if ($position !== false) {
echo "找到了!";
}
截取子串:substr()
$part = substr("Hello World", 6, 5); // "World"
$zhPart = mb_substr("你好世界", 2, 2); // "世界"(多字节安全)
替换:str_replace()
$newString = str_replace("apple", "orange", "I have an apple");
// "I have an orange"
大小写转换
$lower = strtolower("PHP IS FUN"); // "php is fun"
$upper = strtoupper("php is fun"); // "PHP IS FUN"
$title = ucwords("php is fun"); // "Php Is Fun"
去除空白:trim()
$clean = trim(" too much space "); // "too much space"
2.3.3 字符串与数组的跨界演出
字符串→数组:explode()
$fruits = "apple,banana,orange";
$fruitArray = explode(",", $fruits); // ["apple","banana","orange"]
数组→字符串:implode()
$fruitString = implode(" and ", $fruitArray);
// "apple and banana and orange"
2.3.4 格式化字符串:printf家族
printf("There are %d monkeys in the %s", 5, "tree");
// 输出:There are 5 monkeys in the tree
$formatted = sprintf("Price: $%.2f", 19.99);
// "Price: $19.99"
常用占位符:
- %s 字符串
- %d 十进制整数
- %f 浮点数
- %x 十六进制数
2.3.5 多字节字符串:中文等特殊字符处理
// 需要先开启mbstring扩展
mb_internal_encoding("UTF-8"); // 设置内部编码
$chinese = "你好世界";
echo mb_strlen($chinese); // 4(正确计算中文字符)
echo mb_substr($chinese, 2, 2); // "世界"
2.3.6 练习:字符串魔术秀
$magic = "Abracadabra";
echo strlen($magic) . "\n"; // 输出?
echo strpos($magic, "cad") . "\n"; // 输出?
echo substr_replace($magic, "hocus", 4, 3) . "\n"; // 输出?
echo strtoupper(strrev($magic)) . "\n"; // 输出?
答案:
- 11(字符串长度)
- 4("cad"开始位置)
- "Abrahocusabra"(替换第4个字符开始的3个字符)
- "ARBADACARBA"(反转后转大写)
2.3.7 字符串安全小贴士
- 防注入:处理用户输入时要用htmlspecialchars() $safeOutput = htmlspecialchars($userInput);
- SQL安全:使用预处理语句或 mysqli_real_escape_string()
- 正则安全:用preg_quote()处理正则表达式中的特殊字符
记住:PHP中的字符串就像百变星君,掌握它的变化规律,你就能在代码世界里施展各种魔法!下一节我们将探索数组——PHP中的万能收纳箱。