検索
ホームページphp教程php手册PHP の学習: 文字列操作と正規表現

PHP の学習: 文字列操作と正規表現

Jun 14, 2016 am 12:02 AM
PHPの学習コードオープンソース正規表現プログラミングプログラミング言語ソフトウェア開発

メインコンテンツ:

  1. 文字列の書式設定;
  2. 文字列関数を使用して文字列を連結および分離します。
  3. 文字列比較;
  4. 文字列関数を使用して部分文字列の一致と置換を行います。
  5. 正規表現を使用します。

文字列の書式設定

1、スペースを削除します:trim()、ltrim()、rtrim()

trim() 関数は、先頭と末尾のスペースを削除します。

ltrim() 関数は先頭のスペースを削除します。

rtrim() 関数は末尾のスペースを削除します。

2、フォーマット文字列: printf()、sprintf()

printf() 関数と sprintf() 関数は echo と同じ機能を持ち、文字列を出力します。ただし、より複雑な形式 (C# の string.Format() と同様) を実装できます。

printf() と sprintf() のプロトタイプは次のとおりです:

string sprintf(string format[,mixed args..]);
void printf(string format[,mixed args...]);

sprintf() はフォーマットされた文字列を返します。そして、printf は結果を直接出力します。 2 つの関数は似ているため、例として printf() が使用されます。

$boy = "boy";
echo "i am a $boy";
echo '<br />';
printf("i am a %s",$boy);

上記の出力結果は同じです。

形式のタイプは次のとおりです:

PHP の学習: 文字列操作と正規表現

フォーマット内のすべての変換タイプは % で始まります。 「%」記号を出力したい場合は、「%%」を 2 つ使用する必要があります

3、文字列内の文字の大文字と小文字を変更します

a) 文字を大文字に変換します: strtoupper()

$str = "i am a boy";
echo strtoupper($str);

b) 文字を小文字に変換します: strto lower()

$str = "I Am A Boy";
echo strtolower($str);

c) 最初の文字が文字の場合は、ucfirst()

のように大文字に変換します。
$str = "i am a boy";
echo ucfirst($str);

d) 文字列内の各単語の最初の文字を大文字に変換します: ucwords()

$str = "i am a boy";
echo ucwords($str);

4、エスケープ文字列

addslashes() 関数は、「に」を変換したり、二重スラッシュに変換したりするためのものです。

$str = '"i am a [\] boy."';
echo addslashes($str);

出力: 「私は [\] の男の子です。」

addslashes() 関数の反対の関数は、stripslashes() です。

5、エンコードされた文字列

htmlspecialchars() 関数は、&、、" などをブラウザーが解釈できない文字にエンコードします。

文字列関数を使用して文字列を連結および分離する

1、区切り文字列:explode()

そのプロトタイプは次のとおりです:

array explode(string separator,string input[,int limit]);

配列が返されたことがわかります。次のように使用します:

$str = "1,2,3,4,5";
$arr = explode(',',$str);
foreach($arr as $v){
	echo $v.'<br />';
}

1 2 3 4 5 を返す

分離があるから統合も起こります。はい、implode() 関数と join() 関数の実装は、explode() の逆の操作です。

$str = "1,2,3,4,5";
$arr = explode(',',$str);
echo implode(',',$arr);
2、インターセプト文字列: substr()

substr() 関数のプロトタイプは次のとおりです:

string substr(string input,int start[,int length]);
2 番目のパラメータはインターセプトの開始位置を示します。

3 番目のパラメータは、インターセプトされた長さを表します。

次のように使用します:

$str = "i am a boy";
echo substr($str,2);
出力: 私は男の子です

2 番目のパラメータと 3 番目のパラメータが負の場合は、後ろから開始することを意味することに注意してください。

function reverse_i($str){
		for($i=1;$i<=strlen($str);$i++){
			echo substr($str,-$i,1);
		}
		return;
	}
	reverse_i('word');

返回:drow;

字符串比较

1,字符串排序:strcmp(),strcasecmp(),strnatcmp()

strcmp()的原型如下:

int strcmp(string str1,string str2);

如果两个字符串相等,返回0;如果按字典顺序str1在str2后面就返回一个正数,反之。这个函数是区分大小写的。

$str1 = "2";
$str2 = "12";
echo strcmp($str1,$str2);

返回1,说明它是按字典顺序排列的,$str1的第一个字符大于$str2的第一个字符。

strcasecmp()函数除了不区分大小写之外,其他和strcmp()函数一样。

而strnatcmp()则是按照人们习惯的顺序进行排序。它也不区分大小写。

$str1 = "2";
$str2 = "12";
echo strnatcmp($str1,$str2);

返回-1,说明12比2大。

2,获得字符串的长度:strlen()

strlen(“hello”),输出结果为5。

使用字符串函数匹配和替换子字符串

1,在字符串中查找字符串:strstr(),strchr(),strrchr()和strissr()

这些函数看起来张得差不多,真是难记啊!~~

最常用的是strstr()函数,strchr()函数和strstr()函数时一样的,虽然感觉strchr()是查找一个字符的意思。

strstr()函数的原型如下:

string strstr(string haystack,string needle);
第一个参数为整个字符串。

第二个参数为需要查找的子字符串。

如果找到一个匹配,函数会从needle前面返回haystack,否则返回false。如果存在不止一个needle,返回的字符串从出现第一个needle的位置开始。

a).一个精确匹配

$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.";
echo strstr($str1,'very');

输出:very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.

b).多个匹配

$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward";
echo strstr($str1,'been');

输出:been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.

函数strstr()有两个变体。第一个是stristr()函数,它几乎和strstr()函数一样,但区别就是不区分大小写。

第二个是strrchr()函数,它几乎和strstr()一样,但会从最后出现needle的位置的前面返回字符串haystack。

此函数第二个参数为字符。

$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.";
echo strrchr($str1,'w');
输出:ward.

2,查找字符串的位置:strpos(),strrpos()

strpos()函数和strstr()函数的操作类似。但它不是返回一个字符串,而是返回子字符串在整个字符串中的位置。我们平常使用的也是这个。而且比strstr()速度也快。

strpos()函数原型如下:

int strpos(string haystack,string needle,int offset);

第三个参数是可选的,标示开始搜索的位置。

$str1 = "hello word";
echo strpos($str1,'o');

输出:4,位置是从0开始起。也可以用子字符串,这里只是出于演示目的。

$str1 = "hello word";
echo strpos($str1,'o',5);

输出:7。是从位置5开始搜索,也就看不到位置4的那个“o”了。

函数strrpos()也几乎一样,但返回的是子字符串在整个字符串中最后一次出现的位置。

$str1 = "hello word";
echo strrpos($str1,'o');

输出:7。说明“o”在hello word中最后一个位置的7。

这里需要注意一下,PHP中的false等于0,如果strpos()或者strrpos()都返回false(没有找到)或者在第一个字符就找到了(第一个字符的起始位置是0),

那么就区分不出来是找到,还是未找到了。那怎么办呢?只能用“===”恒等式来避免这个问题了。

$str1 = "hello word";
$position = strrpos($str1,'h'); //第一个字符就找到了,$position ==0
if($position === false){
	echo '没有找到';
}else{
	echo $position;
}

3,替换子字符串:str_replace(),substr_replace()

str_replace()函数的原型如下:

mixed str_replace(mixed needle,mixed new_needle,mixed haystack[,int &count]);

第三个参数是可选的。它包含了要执行的替换操作次数。

返回替换过的字符串。

$str1 = "hello word";
echo str_replace('word','china',$str1);

输出:hello china

函数substr_replace()则用来在给定位置中查找和替换字符串中特定的子字符串。原型如下:

string substr_replace(string string,string replacement,int start[,int length]);

这个函数使用字符串replacement替换整个字符串string中的一部分。具体是那一部分则取决于起始位置和可选参数length的值。

需要注意的是,start的值如果是0或者一个正值,就是从字符串开始计算偏移量;如果是一个负值,就从字符串末尾开始的一个偏移量。

使用正则表达式

1,查找子字符串:ereg(),eregi()

ereg()函数的原型如下:

int ereg(string pattern,string search,array [matches]);

在search字符串中查找正则为pattern的表达式,如果发现了与pattern的字表达式相匹配的字符串,这些字符串将会存储在数组matches中,每个数组元素对应一个子表达式。

函数eregi()函数除了不区分大小写外,其功能与ereg()一样。

$str1 = "xxx@gmail.com.cn";
if(!eregi('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}',$str1)){
	echo '不是正确的Email';
}else{
	echo '正确';
}

2,替换子字符串:ereg_replace(),eregi_replace()

于str_replace()函数一样,只不过这两个使用正则表达式当做参数。

ereg_replace()的原型如下:

string ereg_replace(string pattern,string replacement,string search);
$str1 = "123123@gmail.com.cn";
echo ereg_replace('[A-Z0-9._%+-]+@','**@',$str1);

输出:**@gmail.com.cn

函数eregi_replace除了不区分大小写外,其他与ereg_replace()相同。

3,分隔字符串:split()

函数split()的原型如下:

array split(string pattern,string search[,int max]);

第三个参数为可选,表示进入数组中的元素个数。

返回值是数组。

$str1 = "123123@gmail.com.cn";
$arr = split('\.|@',$str1);
while(list($key,$value) = each($arr)){
	echo '<br />'.$key.'--'.$value;
}

输出:

0--123123
1--gmail
2--com
3--cn

split()函数和explode()函数有点相似,前者是用正则表达式当做分隔符,后者是用字符串当做分隔符。

参考:PHP与MySQL.WEB开发

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)