Home php教程 php手册 PHP学习之字符串比较和查找

PHP学习之字符串比较和查找

Jun 13, 2016 pm 12:10 PM
php three to use pair Can and exist string study Find Compare of

1. 字符串比较
在PHP中,可以用==(双等号)或者 ===(三等号)来比较字符串。两者的区别是双等号不比较类型,三等号会比较类型,它不转换类型;用双等号进行比较时,如果等号左右两边有数字类型的值,刚会把另一个值转化为数字,然后进行比较。这样的话,如果是纯字符串或者NULL时,会转化为0进行比较。同样,大小于号也和等号一样,比较时可能出现不正确的结果。
所以,比较字符串可以用PHP的自带函数strcmp和strcasecmp。其中strcasecmp是strcmp的变种,它会先把字符串转化为小写再进行比较。 如下代码:

复制代码 代码如下:


var_dump(0 == 'Test');
var_dump(0 == '');
var_dump(5 > 'T');
var_dump(strcmp(5, 'T'));


结果为(第1~3结果是不对的,只有第4个是对的):

复制代码 代码如下:


bool(true)
bool(true)
bool(true)
int(-1)


2. 字符串处理
1. 子串
$sub = substr(string, start[, length]);
2. 子串替换
$newstring = substr_replace(string, new, start[, length]);
用这个函数可以实现字符串的插入,删除操作。这个函数的start和length可以为负数。分别表示从后开始计算以及保留最后几位不替换。 3. 字符串反序
$newstring = strrev(string);
4. 重复字符串
$newstring = str_repeat(string, count);
返回一个重复count次string的新字符串。
5. 填充字符串
$newstring = str_pad(to_pad, length[, with[, type]]);
其中type有:STR_PAD_RIGHT(默认)、STR_PAD_LEFT和STR_PAD_BOTH三种;with默认为空格。函数表示把to_pad字符串用with填充为一个长度为length的字符串。 如下代码:

复制代码 代码如下:


// 子串
var_dump(substr('1234567890', 8)); // 90
var_dump(substr('1234567890', 0, 2)); // 12
// 反方向子串
var_dump(substr('1234567890', -8)); // 34567890
var_dump(substr('1234567890', -8, -2)); // 345678
var_dump(substr('1234567890', -8, 2)); // 34
// 插入
var_dump(substr_replace('1234567890', 'a', 0, 0)); // a1234567890
// 删除
var_dump(substr_replace('1234567890', '', 8)); // 12345678
// 反方向删除
var_dump(substr_replace('1234567890', '', -2, -1)); // 123456780
// 替换
var_dump(substr_replace('1234567890', 'a', 0, 1)); // a234567890
// 反方向替换
var_dump(substr_replace('1234567890', 'a', -2, -1)); // 12345678a0
// 字符串反转
var_dump(strrev('1234567890')); // 0987654321
// 重复字符串
var_dump(str_repeat('12', 3)); // 121212
// 填充字符串
var_dump(str_pad('a', 10, '12')); // a121212121
var_dump(str_pad('a', 10, '12', STR_PAD_LEFT)); // 121212121a
var_dump(str_pad('a', 10, '12', STR_PAD_BOTH)); // 1212a12121


3. 分解字符串
在PHP中,字符串的分解用explode,合并用implode(join是implode的别名),标记用strtok。还有另一个函数slipt也可以分解(正则分解),但5.3以后版本已经不推介了。 另外PHP中还有一个sscanf()函数,用于读取字符串。
strtok标记时,用strtok($str, $token)来初始化,用strtok($token)来继续取值。
代码如下:

复制代码 代码如下:


$str = '1,2,3';
$arr1 = explode(',', $str); // array('1', '2', '3')
$arr2 = explode(',', $str, 2); // array('1', '2,3')
$str1 = implode(',', $arr1); // '1,2,3'
$str2 = strtok($str, ','); // 1
$str3 = strtok(','); // 2
$str4 = strtok(','); // 3
// array(86, 10, 88888888, 'Beijin')
$arr3 = sscanf('+86(10)88888888 Beijin', '+%d(%d)%d %s');


4.字符串查找
在PHP中,字符串的查找有三个系列。返回位置的、返回字符串的、掩码个数匹配。其中,返回位置的的函数一共有两个,strpos()和 strrpos();返回字符串的也有两个strstr()和strchr();返回掩码匹配数的函数有strspn()和strcspn()。
strpos表示从左边开始计数,返回要查找的字符串第一次出现的位置;strrpos表示从右边计数,返回要查找的字符串第一次出现的位置。
strstr表示从左边计数,返回要查找字符串第一次到结尾的子串(包括查找字符串),当查找的是字符时,可以用ascii码数字来表示字符;stristr表示不区分大小查找;strchr是strstr的别名;strrchr返回字符最后出现到结尾的子串。
strspn表示从左边计数,第一次出现非掩码之前的子串的字符数;strcspn表示从左边计数,第一次出现掩码之前的子串的字符数。
示例代码:

复制代码 代码如下:


$pos = strpos('This a hello world program', ' '); // 4
$pos = strpos('This a hello world program', 32); // 4
$pos = strrpos('This a hello world program', ' '); // 18
$pos = strrpos('This a hello world program', 32); // 18
$str = strstr('This a hello world program', ' '); // " a hello world program"
$str = strstr('This a hello world program', 32); // " a hello world program"
$str = stristr('This a hello world program', ' A'); // "a hello world program"
$str = stristr('This a hello world program', 65); // "a hello world program"
$str = strrchr('This a hello world program', ' '); // " program"
$str = strrchr('This a hello world program', 32); // " program"
$str1 = "12345 12345 12345";
$len = strspn($str1, '12345'); // 5
$len = strcspn($str1, ' '); // 5


参考资料: PHP程序设计,2003,第四章 字符串,字符串比较;字符串查找和处理
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

7 PHP Functions I Regret I Didn't Know Before 7 PHP Functions I Regret I Didn't Know Before Nov 13, 2024 am 09:42 AM

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

PHP Program to Count Vowels in a String PHP Program to Count Vowels in a String Feb 07, 2025 pm 12:12 PM

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

How do you parse and process HTML/XML in PHP? How do you parse and process HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? What are PHP magic methods (__construct, __destruct, __call, __get, __set, etc.) and provide use cases? Apr 03, 2025 am 12:03 AM

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

See all articles