ホームページ  >  記事  >  バックエンド開発  >  PHP による文字列のインターセプトに関連する問題

PHP による文字列のインターセプトに関連する問題

WBOY
WBOYオリジナル
2016-06-13 13:04:05810ブラウズ

PHPインターセプト文字列の問題

プログラミングでは、特定の文字に従って文字列を分割するという問題によく遭遇します。

通常、explode を使用して文字列を配列に分割し、さらに操作を実行します。

しかし、文字列内の 2 つの隣接する分割文字の間の文字列をインターセプトする必要がある場合、explode を使用するのは少し無駄であるように思えます。

結局のところ、他の多くのインターセプト文字列は使用されません。それはスペースの無駄であり、計算の無駄です。


今日、preg_match を使用する方法を発見しました。 (似ているところがあれば、それは運命です)


具体的な方法は以下の通りです。

function getsubstr($str,$dec,$index){//获取str中第index个分隔符dec到第index+1个分隔符之间的字串
     $index+=1;
     $a = '/^([^'.$dec.']*'.$dec.'){'.$index.'}/';
     $match = Array();
     preg_match($a,$str,$match);
     if(isset($match[1])) return rtrim($match[1]);
     return '';
}
?

具体的な原理は説明しませんが、誰でも理解できると思います。

?

さらに、他の 2 つのメソッドは、爆発して文字列配列をインターセプトして値を取得する方法と、文字列をループして、対応する 2 つの区切り文字の位置を見つけて文字列をインターセプトする方法です。

?

テスト後:

?

10w 行レコード処理時間:

???この記事の方法??: 1.3521399497986

???爆発??: 1.4456930160522

???ループトラバーサル??: 1.4808049201965

?

テスト結果は、10W 行のレコードの処理時間に最大 0.1 秒の差があることを示しています。

?

他の方法はないでしょうか?

1階 llh110220 2012-09-19
100,000 行のテキストはすべて 1 つのファイルに含まれていますか?または 100,000 サイクル時間

2階 リウジキアングルク 2012-09-19
llh110220 さんは
100,000 行のテキストをすべて 1 つのファイルにまとめていますか?または 100,000 サイクル時間
そうです、100,000 行はすべてテキスト ファイル内にあります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。