検索
ホームページバックエンド開発PHPチュートリアルPHP は、文字列の類似性を計算するための関数 minimum_text() と levenshtein() を改善しました、levenshtein_PHP チュートリアル

PHP は、文字列の類似性を計算するための関数 simple_text()、levenshtein()、levenshtein

を改善しました

similar_text() 漢字バージョン

コードをコピーします コードは次のとおりです:

//文字列を分割します
関数 split_str($str) {
Preg_match_all("/./u", $str, $arr); 戻り $arr[0]; }

//類似点検出
関数類似テキスト_cn($str1, $str2) {
$arr_1 = array_unique(split_str($str1)); $arr_2 = array_unique(split_str($str2)); $similarity = count($arr_2) - count(array_diff($arr_2, $arr_1));                                        $similarity を返します
}




レーベンシュタイン()漢字バージョン


コードをコピーします

コードは次のとおりです:


          //拆分字符串
     function mbStringToArray($string, $encoding = 'UTF-8') {
         $arrayResult = array(); 
         while ($iLen = mb_strlen($string, $encoding)) {
             array_push($arrayResult, mb_substr($string, 0, 1, $encoding)); 
             $string = mb_substr($string, 1, $iLen, $encoding); 
         }
         $arrayResult を返します。 
     }
     //编辑距離
     function levenshtein_cn($str1, $str2, $costReplace = 1, $encoding = 'UTF-8') {
         $count_same_letter = 0; 
         $d = 配列(); 
         $mb_len1 = mb_strlen($str1, $encoding); 
         $mb_len2 = mb_strlen($str2, $encoding); 
         $mb_str1 = mbStringToArray($str1, $encoding); 
         $mb_str2 = mbStringToArray($str2, $encoding); 
         for ($i1 = 0; $i1              $d[$i1] = 配列(); 
             $d[$i1][0] = $i1; 
         }
         for ($i2 = 0; $i2              $d[0][$i2] = $i2; 
         }
         for ($i1 = 1; $i1              for ($i2 = 1; $i2                  // $コスト = ($str1[$i1 - 1] == $str2[$i2 - 1]) ? 0:1; 
                 if ($mb_str1[$i1 - 1] === $mb_str2[$i2 - 1]) {
                     $コスト = 0; 
                     $count_same_letter++; 
                 } その他 {
                     $コスト = $コスト交換; //代替换
                 }
                 $d[$i1][$i2] = min($d[$i1 - 1][$i2] + 1, //插入
                 $d[$i1][$i2 - 1] + 1, //删除
                 $d[$i1 - 1][$i2 - 1] + $cost); 
             }
         }
         $d[$mb_len1][$mb_len2]を返します; 
         //return array(' distance' => $d[$mb_len1][$mb_len2], 'count_same_letter' => $count_same_letter); 
     }


最大パブリック子シーケンスLCS()

 
复制代码代码如下:

                  //最長の公開子配列英文版
         関数 LCS_en($str_1, $str_2) {
           $len_1 = strlen($str_1); 
           $len_2 = strlen($str_2); 
           $len = $len_1 > $len_2 ? $len_1 : $len_2; 
           $dp = 配列(); 
           for ($i = 0; $i              $dp[$i] = 配列(); 
             $dp[$i][0] = 0; 
             $dp[0][$i] = 0; 
           }
           for ($i = 1; $i              for ($j = 1; $j                if ($str_1[$i - 1] == $str_2[$j - 1]) {
                 $dp[$i][$j] = $dp[$i - 1][$j - 1] + 1; 
               } その他 {
                 $dp[$i][$j] = $dp[$i - 1][$j] > $dp[$i][$j - 1] ? $dp[$i - 1][$j] : $dp[$i][$j - 1]; 
               }
             }
           }
           $dp[$len_1][$len_2]を返します; 
         }
         //拆分字符串
         function mbStringToArray($string, $encoding = 'UTF-8') {
           $arrayResult = array(); 
           while ($iLen = mb_strlen($string, $encoding)) {
             array_push($arrayResult, mb_substr($string, 0, 1, $encoding)); 
             $string = mb_substr($string, 1, $iLen, $encoding); 
           }
           $arrayResult を返します。 
         }
         //最長のパブリック子配列中文版
         関数 LCS_cn($str1, $str2, $encoding = 'UTF-8') {
           $mb_len1 = mb_strlen($str1, $encoding); 
           $mb_len2 = mb_strlen($str2, $encoding); 
           $mb_str1 = mbStringToArray($str1, $encoding); 
           $mb_str2 = mbStringToArray($str2, $encoding); 
           $len = $mb_len1 > $mb_len2 ? $mb_len1 : $mb_len2; 
           $dp = 配列(); 
           for ($i = 0; $i              $dp[$i] = 配列(); 
             $dp[$i][0] = 0; 
             $dp[0][$i] = 0; 
           }
           for ($i = 1; $i for ($j = 1; $j If ($mb_str1[$i - 1] == $mb_str2[$j - 1]) {
$dp[$i][$j] = $dp[$i - 1][$j - 1] + 1;                                                                                                         $dp[$i][$j] = $dp[$i - 1][$j] > $dp[$i][$j - 1] ? : $dp[$i][$j - 1];                                                                                                                                                                                                                                                                    $dp[$mb_len1][$mb_len2] を返します
}






(100 点)[php]よく知っている文字列処理関数をいくつか書いてみましょう!

addcslashes addlashes bin2hex チョップ chr chunk_split Convert_cyr_string キリル文字

convert_uudecode Convert_uuencode count_chars crc32 crc32 crypt echoexplode
fprintf get_html_translation_table hebrev
hebrevc

hex2bin — hexa をデコードします10 進数でエンコードされたバイナリ文字列
html_entity_decode — すべての HTML エンティティを該当する文字に変換します
htmlentities — 変換該当するすべての文字を HTML エンティティに変換します
htmlspecialchars_decode — 特殊な HTML エンティティを文字に変換します
htmlspecialchars — 特殊文字を HTML エンティティに変換します
implode — 配列要素を文字列で結合します
join

lcfirst — 文字列の最初の文字を小文字にする
levenshtein — 計算します2 つの文字列間のレーベンシュタイン距離
localeconv — 数値書式設定情報を取得します
ltrim — 文字列の先頭から空白 (または他の文字) を削除します
md5_file
metaphone — 文字列のメタフォン キーを計算します
money_format — 数値を通貨文字列として書式設定します
nl_langinfo — 言語とロケール情報をクエリする
nl2br

number_format — 数値をグループ化してフォーマットする
ord

parse_str

print

printf

quoted_printable_decode — quote-printable 文字列を 8 ビット文字列に変換する
quote d_printable_encode — 変換8ビット文字列を引用符付き印刷可能な文字列に変換
quotemeta — メタ文字を引用
rtrim
setlocale — ロケール情報を設定
sha1_file

sha1

soundex — 文字列のsoundexキーを計算
sprintf — フォーマットされた文字列を返す
sscanf —文字列からの入力を次に従って解析します...残りのテキスト>>




PHPのlevenshtein関数について分かりやすく説明して頂けませんか

W3School の説明:

levenshtein() 関数は 2 つの文字列間のレーベンシュタイン距離を返します。
編集距離とも呼ばれるレーベンシュタイン距離は、2 つの文字列を一方の文字列からもう一方の文字列に変換するために必要な編集操作の最小数を指します。許可される編集操作には、ある文字を別の文字に置き換える、文字を挿入する、文字を削除するなどがあります。
子猫を座る状態に変換する例:
sitten (k→s)
sittin (e→i)

sitting (→g)
levenshtein() 関数は、各操作 (置換、挿入、削除) に等しい重みを与えます。ただし、オプションの挿入、置換、および削除パラメータを設定することで、各操作のコストを定義できます。

説明: 「コスト」は重みです。投稿者の例では、Hello World → ello World では、「H」を「削除」する必要があります。つまり、5 番目のパラメーターが使用され、対応する重みが 30 であるため、30 が返されます。





http://www.bkjia.com/PHPjc/901291.html
www.bkjia.com

tru​​e

技術記事 PHP は、文字列の類似性を計算する関数類似テキスト() と levenshtein() を改善しました。levenshtein の類似テキスト() の中国語版は、次のようにコードをコピーします。 php //文字列分割関数 split...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
どのデータをPHPセッションに保存できますか?どのデータをPHPセッションに保存できますか?May 02, 2025 am 12:17 AM

phpssionscanStorestrings、numbers、arrays、andobjects.1.strings:textdatalikeusernames.2.numbers:integersorfloatsforcounters.3.arrays:listslikeshoppingcarts.4.objects:complextructuresthataresialized。

どのようにPHPセッションを開始しますか?どのようにPHPセッションを開始しますか?May 02, 2025 am 12:16 AM

tostartaphpsession、outsession_start()atthescript'sbeginning.1)placeitbe foreanyouttosetthesscookie.2)usesionsionsionsionserdatalikelogintatussorshoppingcarts.3)再生セッションインドストップレベントフィックスアタック

セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?セッションの再生とは何ですか?また、セキュリティをどのように改善しますか?May 02, 2025 am 12:15 AM

セッション再生とは、新しいセッションIDを生成し、セッション固定攻撃の場合にユーザーが機密操作を実行するときに古いIDを無効にすることを指します。実装の手順には次のものが含まれます。1。感度操作を検出、2。新しいセッションIDを生成する、3。古いセッションIDを破壊し、4。ユーザー側のセッション情報を更新します。

PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?PHPセッションを使用する際のパフォーマンスの考慮事項は何ですか?May 02, 2025 am 12:11 AM

PHPセッションは、アプリケーションのパフォーマンスに大きな影響を与えます。最適化方法には以下が含まれます。1。データベースを使用してセッションデータを保存して応答速度を向上させます。 2。セッションデータの使用を削減し、必要な情報のみを保存します。 3.非ブロッキングセッションプロセッサを使用して、同時実行機能を改善します。 4.セッションの有効期限を調整して、ユーザーエクスペリエンスとサーバーの負担のバランスを取ります。 5.永続的なセッションを使用して、データの読み取り時間と書き込み時間を減らします。

PHPセッションはCookieとどのように異なりますか?PHPセッションはCookieとどのように異なりますか?May 02, 2025 am 12:03 AM

phpsesionsareserver-side、whilecookiesareclient-side.1)Sessionsionsionsoredataontheserver、aremoresecure.2)cookiesstoredataontheclient、cookiestoresecure、andlimitedinsizeisize.sesionsionsionivationivationivationivationivationivationivationivate

PHPはユーザーのセッションをどのように識別しますか?PHPはユーザーのセッションをどのように識別しますか?May 01, 2025 am 12:23 AM

phpidentifiesauser'ssessionsingsinssessionCookiesIds.1)whensession_start()iscalled、phpgeneratesauniquesidstoredsored incoookienadphpsessidontheuser'sbrowser.2)thisidallowsphptortorieSessiondatadata fromthata

PHPセッションを保護するためのベストプラクティスは何ですか?PHPセッションを保護するためのベストプラクティスは何ですか?May 01, 2025 am 12:22 AM

PHPセッションのセキュリティは、次の測定を通じて達成できます。1。session_regenerate_id()を使用して、ユーザーがログインまたは重要な操作である場合にセッションIDを再生します。 2. HTTPSプロトコルを介して送信セッションIDを暗号化します。 3。Session_Save_Path()を使用して、セッションデータを保存し、権限を正しく設定するためのSecure Directoryを指定します。

PHPセッションファイルはデフォルトで保存されていますか?PHPセッションファイルはデフォルトで保存されていますか?May 01, 2025 am 12:15 AM

phpsessionFilesToredInthededirectoryspecifiedBysession.save_path、通常/tmponunix-likesystemsorc:\ windows \ temponwindows.tocustomizethis:1)uesession_save_path()tosetaCustomdirectory、ensuringit'swritadistradistradistradistradistra

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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン