検索
ホームページバックエンド開発PHPチュートリアル分割オペレーター_PHP チュートリアル
分割オペレーター_PHP チュートリアルJul 14, 2016 am 10:09 AM
split使用タブスプリット操作するモデル空白

Split は、指定されたパターンに従って文字列を分割します。タブ、コロン、空白、または任意の記号を使用して異なるフィールドを区切る文字列の場合、この演算子を使用してフィールドを分解および抽出すると非常に便利です。区切り文字をパターン (通常は非常に単純な正規表現) として記述できる限り、Split を使用してデータを分割できます。その使用法は次のとおりです。

私の @fields = 分割 /separator/, $string;
ここでの Split 演算子は、分割モードを使用して指定された文字列をスキャンし、フィールドのリスト (つまり、部分文字列) を返します。この期間中、パターンがどこかで一致する限り、その場所が現在のフィールドの終わりであり、次のフィールドの始まりになります。したがって、パターンに一致するものは戻りフィールドに表示されません。以下は、コロンを区切り文字として使用した典型的な分割パターンです:
私の @fields = split /:/, "abc:def:g:h"; #Get ("abc", "def", "g", "h")
2 つの区切り文字が結合されている場合、空のフィールドが生成されます:
私の @fields = split /:/, "abc:def::g:h"; #Get ("abc", "def", "", "g", "h")
最初は奇妙に思えるかもしれませんが、めったに問題が発生することはありません。Split は最初に空のフィールドを保持しますが、最後の空のフィールドを破棄します。例:
私の @fields = split /:/, ":::a:b:c:::"; #Get ("", "", "", "a", "b", "c")
Split の /s+/ モードを使用して空白に基づいて文字を区切ることも一般的です。このモードは、連続するすべてのスペースを 1 つのスペースとして扱い、それに応じてデータを分割します:
私の $some_input = “これは t 検定です。n”;
私の @args = split /s+/, $some_input; #Get ("This", "is", "a", "test.")
デフォルトでは、Split は $_ 内の文字列を空白文字で区切ります。
my @fields = spat; #split /s+/,$_; と同等
これは、先頭の空のフィールドを省略する点を除けば、パターンとして /s+/ を使用するのとほぼ同じです。したがって、行が空白で始まっている場合でも、返されるリストの先頭に空のフィールドは表示されません。この方法でスペースで区切られた文字列を分割したい場合は、パターンとしてスペースを使用できます。
一般的に言えば、Split で使用されるパターンは前に見たのと同じくらい単純です。ただし、より複雑なパターンを使用する場合は、パターン内で括弧をキャプチャすることは避けてください。これにより、いわゆる「区切り文字保持モード」が有効になります (パターン内でグループ マッチングを使用する必要がある場合は、Perlfunc のドキュメントを参照してください)。事故を避けるために、分割では捕捉されない括弧 (?:) を使用してください
フィールドの分割分解と抽出によってもたらされる利便性をさらに深めます。これは、実際の作業でフィールドを分解および抽出するために Split オペレーターを使用しなかったコードの一部です (Split オペレーターを使用するコードは後で説明します)。その威力を比較して感じます。
タスク: passwd ファイルからユーザー名とユーザーのホーム ディレクトリ情報を抽出します。
まず passwd ファイル内のレコード形式を見てみましょう (図 1-1 一部抜粋):
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/sh
……
各フィールドがコロン (:) で区切られていることがわかります。例として最初のレコードを左から右に考えると、最初のコロンの前に root (ユーザー名) を抽出し、6 番目のコロンの前に /root を抽出する必要があります。 . (ユーザーのホームディレクトリ)。
[php]
#Code 1.1 Split 演算子はフィールド コードの抽出には使用されません。
#!/usr/bin/perl -w
厳密に使用します。
open (FH, '/etc/passwd') or die "ファイルを開けません: $!";
ながら (){
私の ($Pos,$endPos,$length,$Name,$Dir);
##############
# ユーザー名を取得する
##############
$length = インデックス ($_, ":");
$Name = substr ($_, 0, $length);
#####################
# ユーザーの HOME ディレクトリの場所を取得します
#####################
$endPos = rindex ($_, ":");
# $endPos-1 現在の位置(コロン)をスキップします
$Pos = rindex ($_, ":", $endPos - 1);
# $Pos+1 現在の位置 (コロン) をスキップします
#検索方向は左から右です。 +1
$Pos += 1;
$length = $endPos - $Pos;
$Dir = substr ($_, $Pos, $length);
「$Namet$Dirn」を印刷します
}
閉じる (FH);
プログラム実行後の出力は次のとおりです (図 1-2)。
ルート/ルート
ビン/ビン
……
次に、このコードのアルゴリズムを分析してみましょう。ユーザー名の抽出は非常に簡単です。最初のコロンの位置を見つけるだけで済み、substr($_,0,$length) 関数によって返される部分文字列が必要なユーザー名になります。アルゴリズムのより複雑な部分は、ユーザーのホーム ディレクトリを抽出することです。図 1-1 から、最後から 2 番目のコロンの後の /root が後ろから前に (右から) 記録される固定形式であることがわかります。ディレクトリ情報。
ユーザーのホームディレクトリを抽出するためのアルゴリズムのアイデア:
1. レコードの最後のフィールドをスキップします。
2. 最後から 2 番目のフィールドの開始位置を見つけます。
3. 最後から 2 番目のフィールドの開始位置 (/ 記号) から、最後から 2 番目のフィールドの開始位置 (コロン) を減算します。その結果が、ユーザーのホーム ディレクトリ フィールドの文字長になります。
4. substr($_,$Pos,$length); はユーザーのホームディレクトリ情報を返します。
5.完了。
(図 1-3 ユーザーディレクトリ抽出アルゴリズム)
要約すると、私たちのタスクは、Perl 文字列処理関数を通じてフィールド情報を見つけて抽出することで完了できます。接続されていない複数のフィールドを抽出する場合、手順がより複雑になり、コードが長くなることが予想されます。エラーが発生しやすくなる場合は、各フィールドの位置の変更を記録すると、アルゴリズムを再設計する必要があります。
次に、Split オペレーターを使用して抽出されたフィールドを分解する例を見てみましょう:
分割オペレーター_PHP チュートリアル[php]
#Code 1.2 Split 演算子を使用してフィールド コードを抽出します。
#!/usr/bin/perl -w
厳密に使用します。
open (FH, '/etc/passwd') or die "ファイルを開けません: $!";
ながら (){
###########
# ユーザー情報を取得する
###########
my($Name,$Dir) = (分割 /:/,$_)[0,5];
「$Namet$Dirn」を印刷します
}
閉じる (FH);
http://www.bkjia.com/PHPjc/477706.html
www.bkjia.com
tru​​e
http://www.bkjia.com/PHPjc/477706.html
技術記事
分割 指定されたパターンに従って文字列を分割します。タブ、コロン、空白、または任意の記号を使用して異なるフィールドを区切る文字列の場合、この演算子を使用して抽出されたフィールドを分解します...

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

String中split方法使用String的split()方法用于按传入的字符或字符串对String进行拆分,返回拆分之后的数组。1、一般用法用一般的字符,例如@或,等符号做分隔符时:Stringaddress="上海@上海市@闵行区@吴中路";String[]splitAddr=address.split("@");System.out.println(splitAddr[0]+splitAddr[1]+splitAddr[2]+splitAddr[3

PHP编程中有哪些常见的Behat操作?PHP编程中有哪些常见的Behat操作?Jun 12, 2023 am 08:19 AM

PHP编程中有哪些常见的Behat操作?Behat是一个行为驱动开发(BDD)工具,允许测试人员和开发人员在自然语言中撰写测试用例,并将这些用例转化为可执行的代码。它支持PHP语言,并提供了丰富的库和功能,可以实现多种常见的测试操作。下面列举了PHP编程中常见的Behat操作。前置条件(Background)在编写测试用例时,有时候会有一些公共的前置条件需要

如何解决 golang 中的 “undefined: bytes.Split” 错误?如何解决 golang 中的 “undefined: bytes.Split” 错误?Jun 25, 2023 pm 02:02 PM

在Go语言中,bytes包是一个用于操作字节类型的包,并且它包含了许多有用的方法,比如Split()方法。不过,在使用Split()方法时,你可能会遇到“undefined:bytes.Split”的错误。这种错误通常是由于Go版本不兼容或缺少必要的依赖库等原因引起的。这篇文章将介绍一些解决这种错误的方法。方法一:升级Go版本如

split在python中的用法split在python中的用法Nov 17, 2023 am 10:13 AM

在Python中,split() 是一个常用的字符串方法,用于将字符串分割成子字符串,并返回一个包含这些子字符串的列表。该方法可以根据指定的分隔符将字符串拆分成多个部分。其基本语法是“str.split(separator, maxsplit)”,str是要分割的字符串,separator是分隔符,maxsplit是可选参数,表示最大分割次数。

go语言中split方法有什么用go语言中split方法有什么用Jan 28, 2023 pm 01:37 PM

在go语言中,Split()方法用于分割字符串,可以使用分隔符将字符串划分为子字符串列表,而子字符串以切片的形式返回。Split()是strings包的方法,使用前需要先导入strings包,使用语法为“strings.Split(待分割的字符串, 分隔符)”。

ThinkPHP6如何进行表单验证操作?ThinkPHP6如何进行表单验证操作?Jun 12, 2023 am 09:36 AM

ThinkPHP6是一款基于PHP的MVC框架,极大地简化了Web应用程序的开发。其中表单验证是一个非常基础和重要的功能。在这篇文章中,我们将介绍ThinkPHP6中如何进行表单验证操作。一、验证规则定义在ThinkPHP6中,验证规则都需要定义在控制器中,我们可以通过在控制器中定义一个$validate属性来实现规则的定义,如下所示:usethinkVa

Linux中split命令详解Linux中split命令详解Feb 21, 2024 pm 06:06 PM

Linux中split命令详解split是Linux中一个常用的命令,它用于将一个文件分割成多个较小的文件。在本篇文章中,我们将详细介绍split命令的用法,并提供一些具体的代码示例。一、命令语法split命令的基本语法如下所示:split[选项][输入文件][输出文件前缀]选项:-:按照指定的行数分割文件,默认为1000行。-

PHP编程中有哪些常见的jQuery操作?PHP编程中有哪些常见的jQuery操作?Jun 12, 2023 am 10:38 AM

PHP编程中有哪些常见的jQuery操作?在PHP编程中,使用jQuery进行网页开发是一种非常方便和高效的方式。jQuery是一个简单而强大的JavaScript库,包含了许多实用的方法和函数。在PHP编程中,我们常常使用jQuery来操纵HTML和DOM元素,使网页具有更好的交互性和高度的可视化效果。在本文中,我们将介绍一些常见的PHP编程中使用jQue

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境