2011-07-28 12 views
1

私はこのidがこの質問をする場所がわからないので、私が間違っていれば親切にしてください。PHPコードの説明質問です。

以下の3つのコードスニペットでは、誰かが私に詳細を説明できるかどうか疑問に思っていました。

スニペット1

if($str !== mb_convert_encoding(mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32')){ 
    $str = mb_convert_encoding($str, 'UTF-8'); 
} 

スニペット2

$str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', '\\1', $str); 

スニペット3

$str = preg_replace(array('`[^a-z0-9]`i','`[-]+`'), '-', $str); 

ここで参考のために以下に完全なコードです。

function to_permalink($str){ 
    if($str !== mb_convert_encoding(mb_convert_encoding($str, 'UTF-32', 'UTF-8'), 'UTF-8', 'UTF-32')){ 
     $str = mb_convert_encoding($str, 'UTF-8'); 
    } 
     $str = htmlentities($str, ENT_NOQUOTES, 'UTF-8'); 
     $str = preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i', '\\1', $str); 
     $str = html_entity_decode($str, ENT_NOQUOTES, 'UTF-8'); 
     $str = preg_replace(array('`[^a-z0-9]`i','`[-]+`'), '-', $str); 
     $str = strtolower(trim($str, '-')); 
     return $str; 
} 
+0

あなたは彼らが何をしているのかをテストしようとしましたか? –

答えて

0

多くの質問には、コード内でどのような機能が実行されているかを調べることができます。

は始めるためにここに行く:http://php.net/docs.php

6

スニペット1は文字列がUTF-8エンコーディングであることを確認します。

スニペット2はすべての特殊文字を基本形式(つまり 'é' - > 'e')に変換します。

スニペット3は、スペースをハイフン( - )に変換します。 Egliseの

:すべてのすべてで

、考慮に関数の名前と内容を取って、私はURLフレンドリーリンクを作成するために使用されていると言うだろうが、例えば、

を変換する私は新しいフランス語の単語を発見しました

I-発見 - 新しい - フランス語の単語-Egliseの

通常はSEOに使用されます。

0

スニペット#1:文字列がソース - > UTF-32 - > UTF-8から往復変換して有効なUTF-8データであるかどうかを確認します。結果が入力と同じでない場合は、MBライブラリが入力エンコーディングを決定し、UTF-8として出力するかどうかを確認します。ほとんど利益のためにかなり多くの仕事をしているようだ。

スニペット#2:一連の潜在的な文字エンティティ(この場合はアクセント記号付きの文字)を探し、先頭に「&」と「;」を取り除き、バックスラッシュを追加します。従ってÆ\AEligになります。

スニペット#3:a-zまたは0-9または単一-に1以上-のシーケンスでない任意の文字に変換します。