注: 以下のすべての関数は正規表現を使用しません。
上記は、同じ目的を達成するために最初の一致を抽出する 3 つの関数です
function str_cut($str,$start, $end) {//最初の一致、最も効率的なものを取得し、最初に分割してから置換します
$ content = strstr( $str, $start );
$content = substr( $content, strlen( $start ), strpos( $content, $end ) - strlen( $start ) );
function str_cut1($str,$start, $end) {//最初の一致を効率的に取得し、直接検索して置換します
$x = strpos($str, $start)
return substr($str, $x+ strlen) ($start), strpos($str, $end)-$x+strlen($end));
}
function str_cut3($content,$start,$end){//最初の一致を取得します。文字列は遅くなります。
$my =explode($start,$content);
$my =explode($end,$my[1]);
return $my[0]; 以下は、すべての一致を取得する 3 つの関数です。 (すべてオリジナル)、同じ収集目的を達成するため
function strcut($str ,$start, $end) //まず番号を検索し、速度は中程度です
{
$sum $str = strstr( $str , $ 開始);
return $carr;
}
function str_cut_all($str,$start, $end,$carr=array()) //再帰、実行効率が最も遅い!
{
if( strpos( $str, $start) )
{
$str = strstr($str, $start);
$str = substr($str, strlen($start)); $carr[] = substr( $str, 0, strpos( $str, $end ) ); ); $end ,$carr }
}
$carr を返す
関数 my_Ca($content,$start,$ end){// すべての一致を取得します。これは一度だけ読み取られるため、文字列が大きいほど明らかです
$a = array(); for( $i = 1;$i < count($m);$i++ )
{
$my =explode($end,$ m[$i]);
$a[] = $my[0] ;
unset($my);
return $a($content,$start,$end){//
$m =explode($start,$content); ;
$sum = count($m);
for ( $i = 1;$i < $sum;$i++ )
{
$my =explode($end,$m[$i]); a[] = $my[0];
unset( $my)
return $a;
さらに速くなりました!
上記からわかるように、配列処理関数(explode)が文字列処理関数(substrなど)より遅いというわけではなく、また、これより速いというわけでもありません。より多くの配列関数が一致するほど利点が大きくなります。文字列の処理は、ケーキをますます小さくカットするようなものです。 Cut メソッド (str_cut) を使用して単一の文字列を一致させると、同じ効果が得られます。鍵はやはりアルゴリズムにあります!アルゴリズムはよく書かれており、すべての関数は同じです。