クラスKeyReplace

  {

  プライベート$キー=配列();

  プライベート$テキスト= "";

  プライベート$ランタイム=;

  真のプライベート$のURL =;

  民間の$ stopkeys =配列();

  プライベート$すべて=偽;

  パブリック関数の__construct($テキスト= ''''、$キー=配列()、$ URL = trueの場合、$ stopkeys =配列()、$すべて=偽){

  の$ this - >キー= $キー.

  の$ this - >テキスト= $テキスト.

  の$ this - > URL = $ URL;

  の$ this - > stopkeys = $ stopkeys.

  すべて= $、すべての$ this - >.

  }

  パブリック関数getResultText(){

  $スタート=のmicrotime(真の);

  $キー=の$ this - > hits_keys();

  $ Keys_tmp = array_keys()($キー).

  関数CMP($、$ b)は{

  もし(mb_strlen($)== mb_strlen($ B)){

  リターン;

  }

  リターン(mb_strlen($) < mb_strlen($b)) ? : -;

  }

  usort($ keys_tmp、 "CMP").

  foreachの($キーと$ keys_tmp){

  IF(IS_ARRAY($キー[$キー])){

  $のURL = $キー[$キー] [ランド(カウント($キー[$キー]) - )];

  } そうしないと

  $のURL = $キー[$キー].

  の$ this - >テキスト=の$ this - > R_S(の$ this - >テキスト、$キー、$ URL);

  }

  の$ this - >ランタイム=のmicrotime(真) - $始めます.

  の$ this - >テキストを返します.

  }

  パブリック関数getRuntime(){

  リターンの$ this - >ランタイム.

  }

  パブリック関数setKeys($キー){

  の$ this - >キー= $キー.

  }

  パブリック関数setStopKeys($キー){

  の$ this - > stopkeys = $キー.

  }

  パブリック関数のsetText($テキスト){

  の$ this - >テキスト= $テキスト.

  }

  パブリック関数hits_keys(){

  $アルゴン=の$ this - >キー.

  $アルゴン= $ AR?$のAr:配列();

  $結果=配列();

  $筋力=の$ this - >テキスト;

  foreachの($ $ K => $ URLとしてAR){

  $ K =トリム($ K).

  (もし!$ K)

  継続する;

  もし(strpos($ strの、$ K)!== falseを&& !in_array($ K、の$ this - > stopkeys)){

  $ [$ K] = $ URLを結果.

  }

  }

  $結果を返します?$結果:配列();

  }

  パブリック関数hits_stop_keys(){

  $アルゴン=の$ this - > stopkeys.

  $アルゴン= $ AR?$のAr:配列();

  $結果=配列();

  $筋力=の$ this - >テキスト;

  foreachの($ $ kとAR){

  $ K =トリム($ K).

  (もし!$ K)

  継続する;

  もし(strpos($ strの、$ K)!==偽&& in_array($ K、の$ this - > stopkeys)){

  $結果は[] $ K =.

  }

  }

  $結果を返します?$結果:配列();

  }

  プライベート関数R_S($テキスト、$キー、$ URL){

  $ TMPは$テキストを=.

  $ Stop_keys =の$ this - > hits_stop_keys();

  $ Stopkeys = $タグ= $ A =配列();

  もし(preg_match_all(「#] +> [^<]*] *>#蘇」、$ TMP、$ M)){

  $ A = $ M [].

  foreachの($ M []として$ K => $ Z){

  $ Z =にpreg_replace( "#\ ## S"、 "\#"、$ Z);

  $ TMP =にpreg_replace( ''#''.$ Z.''#S''、 "[_".$ K."_]"、$ TMP、);

  }

  }.

  もし(preg_match_all(「#<[^>] +>#S」、$ TMP、$ M)){

  $札= $ M [].

  foreachの($ M []として$ K => $ Z){

  $ Z =にpreg_replace( "#\ ## S"、 "\#"、$ Z);

  $ TMP =にpreg_replace( ''#''.$ Z.''#男性だけの".$ K."_]"、$ TMP、);

  }

  }

  (もし!空($ stop_keys)){

  もし(preg_match_all( "#".破( "|"、$ stop_keys)."#S"、$ TMP、$ M)){

  $ Stopkeys = $ M [].

  foreachの($ M []として$ K => $ Z){

  $ Z =にpreg_replace( "#\ ## S"、 "\#"、$ Z);

  $ TMP =にpreg_replace( ''#''.$ Z.''#S''、 "[_ S".$ K."_]"、$ TMP、);

  }

  }

  }

  $キー=にpreg_replace( "#([\#\(\)\ [\] \ *])#S"、 "\\\\ $"、$キー).

  もし(の$ this - > URL)

  $ TMP =にpreg_replace(「#(?!\ [_ S | \ [_ | \ [_ | \ [_トン| \ [_ TA | \ [_タグ)」.$キー.「(?!AG \ D + _ \] |グラム\ D + _ \] | \ D + _ \] | S \ D + _ \] | _ \])#私たち」、 "".$キー."」、$ TMP、ます$ this->すべての?- :);

  そうしないと

  $ TMP =にpreg_replace(「#(?!\ [_ S | \ [_ | \ [_ | \ [_トン| \ [_ TA | \ [_タグ)」.$キー.「(?!AG \ D + _ \] |グラム\ D + _ \] | \ D + _ \] | S \ D + _ \] | _ \])#私たち」、$ urlには、$ TMP、ます$ this->すべての?- :);

  (もし!空($ A)){

  foreachの($として$ nは=> $){

  $ TMP = str_replace( "[_".$ N."_]"、$で、$ TMP);

  }

  }

  (もし!($タグ)を空にする){

  {foreachの($ nは=> $として$タグ)

  $ TMP = str_replace( "[_タグ".$ N."_]"、$で、$ TMP);

  }

  }

  (もし!空($ stopkeys)){

  foreachの($ nは=> $として$ stopkeys){

  $ TMP = str_replace( "[_ S".$ N."_]"、$で、$ TMP);

  }

  }

  $ TMPを返します.

  }

  }

(交換、削減の回避重複すると元のリンクを保持)PHPキーワード置換クラスの分析

Recommend Article: