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 秒の差があることを示しています。
?
他の方法はないでしょうか?
そうです、100,000 行はすべてテキスト ファイル内にあります。