PHP コードのフォーマット規則。 Bitrix に変換、文書化されていない関数 Bitrix 文字コード生成

現代の大規模プロジェクトでは、原則として、ページに cnc を使用することが必須です。 サイトのインデックス作成と結果の問題にプラスの効果があります。

CNC - 人間が理解できる URL。 つまり、これはラテン語で音訳された URL の一部です。 ロシア語のアルファベットの php への音訳はすでに分析しました。 Bitrix にはこのような機能があり、たとえば、情報ブロックの新しい要素またはセクションが作成されたときに、この要素またはセクションのシンボリック コードがその名前から生成されます。 しかし、要素が既に作成されているが、シンボリック コードが登録されていない場合はどうすればよいでしょうか。 この場合の解決策を見てみましょう。

"株式会社",); $arFilter = array("IBLOCK_ID" => $arParams["IBLOCK_ID"], "IBLOCK_LID" => "s1" //サイト名 //"CODE" => "", //"CODE" => false); $arTransParams = array(//(最大コード長, case(lower, upper, do not change), //スペースを...で置換,他の文字を...で置換,余分な置換文字を削除) "max_len" => 100 , "change_case" => "L", // "L" - toLower, "U" - toUpper, false - 変更しない "replace_space" => "-", "replace_other" => "-", "delete_repeat_replace " => true); if($arParams["TYPE_WORK"] == "section")(//セクションの場合 $db_elemens = CIBlockSection::GetList($arOrder, $arFilter, false); $db_elemens->NavStart($arParams["LIST_CNT"] ); エコー "
"; while($ar_res = $db_elemens->GetNext()) ( $transName = CUtil::translit($ar_res["NAME"], "ru", $arTransParams); $arPropArray = Array("CODE" => $transName); $el = 新しい CIBlockSection; $res = $el->Update($ar_res["ID"], $arPropArray); echo "結果 ".$ar_res["NAME"]."".$transName."".($res?" and OK":" and failed")."\r\n"; ) echo "
"; )elseif($arParams["TYPE_WORK"] == "要素")(//要素の場合 $db_elemens = CIBlockElement::GetList($arOrder, $arFilter, false, array("nTopCount" => $arParams[" LIST_CNT"])); エコー "
"; //生成結果の書式付き出力用 while($obElement = $db_elemens->GetNextElement()) ( $ar_res = $obElement->GetFields(); $transName = CUtil::translit(trim($ar_res[" NAME" ]), "ru", $arTransParams);//名前からシンボル コードを生成する関数 $arPropArray = Array("CODE" => $transName."-".$ar_res["ID"],);/ /完成したコードに「接頭辞」を追加 - "-id" $el = new CIBlockElement; $res = $el->Update($ar_res["ID"], $arPropArray);//結果を書き込み、この要素のコード echo $ transName."-".$ar_res["ID"]." 
"; //結果を出力する ) echo "
"; } ?>

PHPスクリプトを数回実行する 別ファイルまたは、Bitrix 管理パネルの php コンソールで、文字コードの生成が成功したというメッセージが表示されなくなるまで。 その結果、対応する NC の形式でラテン文字列が「文字コード」フィールドに表示されます。

子供用スキー: lyzhi-detskie
レゴのおもちゃ: toyrushka-lego

コードのフォーマットがこのセクションで指定されていない場合、コードは PSR-2 に従ってフォーマットする必要があります。

  • タブは、コード内のインデントとして使用されます。
  • 左中括弧は同じ行にあります。
  • 閉じ中かっこは新しい行にあります。

コードのコメント

PHP コードにコメントすることは、その不可欠な部分です。

コードにコメントを付けるときは、PHPDoc コメントを使用します。

コード内の 1 行の説明コメントには、 // で始まる通常のコメントを使用できます。

変数

変数命名の基本的な規則は、変数の目的を説明するためにコメントを必要としないような名前にすることです。

プレフィックス

変数名には、次のプレフィックスが使用されます。

  • ar- 配列の場合
  • デシベル- CDBResult の場合
  • b- ブール変数の場合、名前が明らかでない場合。 文字列が通常格納される場所でブール値が使用される場合、接頭辞が必要です。 はい/いいえ.

$arUserList = 配列(); $dbRes = CIBlockElement::GetByID($id); $bActive = false;

変数名はアンダースコアで始めてはなりません。

グローバル変数

グローバル変数はアンダースコアで区切られた大文字で書かれています。

グローバル $USER、$APPLICATION、$AR_MESSAGES。

グローバル変数の使用は、絶対に必要な場合にのみ許可されます。 D7 が提供するものを使用してください。

ローカル変数

スクリプト (関数、メソッド、クラス) のローカル変数は常に小文字で始まり、単語は最初の文字の大文字化 (camelCase) で区切られます。

この規則は略語に適用されます。
それらの。 BBC ステーションのスペルは $bbcStation です。 $arBbcStations; .

唯一の例外があります - ID は大文字で書かれています。
それらの。 $sectionID 、 $arElementIDs .

$カウンター = 0; $bElementActive = false; $lastErrorMsg = ""; $ID = $_GET["ID"];

補助 (一時) 変数

FOR... FOREACH 構文で使用される変数は、それらが使用されているブロックのコードがページをスクロールせずに表示される場合、省略できます。

($i = 0; $i の場合< count($arRows); $i++) { // ... } foreach ($arElement as $k =>$v) ( // ... ) while ($arr = $dbRes->Fetch()) ( // ... )

定数

定数名は大文字で書かれ、単語はアンダースコアで区切られます。 グローバル スコープに関連して、定数の前に短いプレフィックス (モジュール、コンポーネント、テンプレートの名前) を付ける必要があります。

Bitrix 文字コード

Bitrix のシンボリック コードは多くのことで必要とされるため、統一された名前に従う必要があります。 文字コードは、数字や特殊文字を使用せずにラテン文字で記述し、情報ブロック、セクション、または要素の本質を反映する必要があります。

クラス、メソッド、関数の命名

  • クラス名は常に 大文字. 単語は、最初の文字の大文字化によって区切られます。 (キャメルケース)
  • メソッドと関数の名前は、常に小文字で始まります。 単語は、最初の文字の大文字化によって区切られます。 (キャメルケース)

関数のグローバル スコープに関連して、それらの名前は短い接頭辞 (モジュール、コンポーネント、テンプレートの名前) で始める必要があります。

制御構造の形成

制御構造の一般的なルールは、コードの論理ブロックをインデントすることです。

ブロックが 1 つの画面に収まらない場合は、少なくとも 2 つのタブがインデントされます。 1 つの論理要素に関連する大きなコード ブロックは、2 つ以上の空行で区切られ、要素の論理を説明する開始および終了コメントを提供する必要があります。

コードの自動フォーマット、パラメーターの設定のためのツール

【SublimeText用プラグイン】

  • PhpDoc - PHPDoc 形式をサポートする実際のプラグイン.
  • phpfmt - プラグイン 自動フォーマット php コード (php がインストールされている必要があります)。

プラグイン構成 phpfmt.

各文字が 7 ビットでエンコードされる標準の国際文字コード。 電気通信のトピック、基本概念 EN ISO 7 ...

ISO-7 コード- 標準国際文字コード (ISO 646 1973)。各文字は 7 ビットでエンコードされます。 米国では、このコードのバージョンは ASCII と呼ばれます。 [E.S. Alekseev、A.A. Myachev。 コンピューター システム エンジニアリングの英語ロシア語解説辞書。 モスクワ 1993]… … 技術翻訳者ハンドブック

コード (デジタル コンピューター)- デジタルコンピュータのコード、 条件付きシステムデジタル コンピューターで情報を提示するための標識。 各K.は自分のアルファベットの文字を使用しています。 大部分のアルファベットでは、アルファベットは 2 文字であるか、2 文字のアルファベットの文字で構成されています。 K.の体型はキャラクターによって異なりますが……

IATA航空会社コード- 国際協会によって航空会社に割り当てられた IATA 航空会社コード 2 または 3 文字の一意の識別子 空輸(IATA). このコードは、IATA 決議第 762 号に従って、協会の本部によって割り当てられています ... ... ウィキペディア

コード- I (フランス語コード、ラテン コーデックス法典から) 送信、処理、および保存 (記憶) のための従来の記号 (記号) のシステム 各種情報. コード文字の最後のシーケンスは単語と呼ばれます。 違うキャラの数、…… 偉大なソビエト百科事典

RADIX-50- 16 ビットの 1 語に 3 文字を書き込める文字コード。 これは、主に PDP 11 ファミリ (SM コンピュータ) のミニコンピュータで、ファイル名を保存するために主に使用されました。 ファイルシステム OS RT 11 と RSX 11、モジュール名 ... ... Wikipedia

エスコン- (エンタープライズ システム接続) IBM zSeries サーバーとサーバー間の情報交換を提供するファイバー チャネル インターフェイス 周辺機器(または別のサーバー)。 archite サーバーで最初に使用された ... ウィキペディア

住所- n.、m.、使用。 形態学: (いいえ) なに? 何のためのアドレス? 住所、(見て)なに? 何の住所? 何についてのアドレス? 住所について; pl。 何? 住所、(いいえ)何? 何のためのアドレス? 住所、(参照)何? アドレス、何? 何についてのアドレスですか? 住所について 1. 誰かの住所 …… 辞書ドミトリエワ

タスク ID- 実行中または実行準備完了のタスクに割り当てられた文字コード。 [ドマレフ V. 安全性 情報技術. システムアプローチ。] トピック 情報セキュリティ EN タスク識別子 ... 技術翻訳者ハンドブック

Pascal (プログラミング言語)- この記事またはセクションは改訂が必要です。 Pascal には、モジュール、OOP、およびその他の新しいトレンドはありません。 拡張機能の説明は、対応する ... ウィキペディアに関する記事にのみ存在する必要があります

パスカル (言語)- Pascal セマンティクス: 手続き型 実行タイプ: コンパイラ 導入: 1970 年 著者: Niklaus Wirth Pascal は高水準のプログラミング言語です。 一般的用途. 最も多くの1つ 既知の言語プログラミング、広く... ... ウィキペディア

書籍

  • 表現論における言語学的および文化的方法。 文化のコード、M. L. Kovshova。 モノグラフは、表現単位の言語文化学的研究に専念しています-国民の価値志向を比喩的に保存し、世代から世代へと伝達する言語記号... 1053 UAHで購入(ウクライナのみ)
  • 語法における言語学的および文化的方法文化のコード、Kovshova M.

発行日: 2011 年 12 月 12 日

先日、Bitrix の「家具カタログ」インフォブロックのセクションと要素の文字コードを生成する必要がありました。

何が起こったか 文字コードセクションまたはインフォブロック要素で ビトリクスで? Bitrix の情報ブロックの要素 (セクション) の記号コードは、 ニーモニック識別子、これは一連の文字 (ラテン文字と数字) です。 このニーモニック識別子を使用して、サイトの動的ページのリンク アドレスを生成できます。 たとえば、「布張りの家具」セクションの要素「ソファ コスモス」の文字コードが「divan-cosmos」の場合、サイト上のリンクは「/catalog/myagkaya-mebel/divan-cosmos」のようになります。

それは一挙に行われます。主な問題は、どの方法で音訳するかということでした。 最初に考えたのは、実際にはある種のメソッドを構成することです。 彼女はすぐにそれを却下しました。 単純な理由で - 結局、これらの文字コードは CMS でどのように生成されるのでしょうか? また、それらがどのように生成されるか。 だから方法がある! はい、そうです。

そのようなものがあります シンプルな機能何らかの理由で、公式の Bitrix API ドキュメントにはまだ記載されていません。 (この記事の執筆時点 (2011 年 12 月) では、ドキュメントには言及されていません)

CUtil::translit($str, $lang, $params = array())

関数は文字列を音訳します $str舌から $langパラメータ付き $params.

配列内のパラメーター $params:

カーネルの新しいバージョン(11.5.2で見た)に登場 新しいパラメータ 「安全な文字」、デフォルトは ""、コメントアウトされた "use_google"、デフォルトは false。

使用例:

"-","re​​place_other"=>"-"); $trans = Cutil::translit($name,"ru",$arParams); $トランスをエコーし​​ます。 ?>

アップデート。質問はコメントで尋ねられました:
「情報ブロックのインポート時に CNC が生成するように、Bitrix のどこに何かを規定する簡単な方法はありますか?」
質問が間違っていて、私には理解するのが難しいです。 しかし、特別なケースとして、そのような例を挙げます-
タスクは、CSV から貿易カタログをインポートするときに商品の文字コードを生成することです。

"-","re​​place_other"=>"-"); $trans = Cutil::translit($name,"ru",$arParams); $arFields["CODE"] = $trans; ) ) ?>

したがって、CSV ファイルからインポートすると、シンボリック コードが自動的に生成されます (名前の音訳)。

重要な UPD2。

彼らは音訳が機能しないという質問をし始めました。コメントを参照してください。 私はそれを理解することにしましたが、現在または古いプロジェクトのいずれでも問題を再現できません。すべて問題ありません。 しかし、人々はそうではありませんか?

解決!

問題はエンコーディングにあります。 .htaccess に追加:

php_value mbstring.func_overload 2
php_value mbstring.internal_encoding UTF-8

これが役に立たない場合はどうすればよいですか?「サイトチェック」ページの管理パネルに移動し、チェックを開始します。 不正なエンコーディングに関するメッセージがチェックに残っていても、がっかりしないでください。 ホストに連絡してこれらの設定を修正するか、標準の音訳機能を忘れて独自の文字変換機能を作成する必要があります。 (また、エンコーディングによる他のすべての不具合に驚かされることもありません)。

タイプライターで書かれたテキストは、印刷された文字 (グラフィック シンボル) で構成されます。
グラフィック文字は、テキスト内で目に見える表示を持つ文字です。
すべてのグラフィック シンボルは、単一のセットに収集されます。 ユニバーサルシステムユニコード。
HTMLドキュメントにUnicodeグラフィック文字を挿入する
- この表の主で唯一の目的。

次のいずれかの方法で、HTML ドキュメントに文字を挿入できます。

  1. シンボル イメージをブラウザ ウィンドウからビジュアル HTML エディタのウィンドウにコピーします。
  2. 文字の html コードを html ドキュメントのコードに直接コピーする
これらは 2 つの異なる方法であることを理解しています。
  1. ビジュアルにビジュアルを挿入
  2. コード内にコードを埋め込む。

シンボルのフォント、HTML でのサイズと色は、次のようなコードで設定できます。
CHAR_CODE
どこ、
Arial - フォント、
10px - ピクセル単位のフォント サイズ、
#ff0000 - フォントの色コード (赤)

例えば:
☎ - 文字フォントサイズ 30px,
☎ - 文字フォントサイズ 30px、色 - 赤
☎ - 文字フォントサイズ 20px,
☎ - 文字フォントサイズ 10px。
ノート。 特殊文字の挿入に推奨されるフォントは、Arial、Verdana、および Tahoma です。 これらのフォントは Unicode 文字を正しく表示し、Web アプリケーションで適切にサポートされます。

  1. "シンボル"
    (可視シンボル表示)
    この列から、シンボル イメージをコピーして、html テキスト エディター ウィンドウに貼り付けることができます。 シンボルは 20px のフォント サイズでコピーされます。 コピーが完了した後、コピーした文字のフォント サイズを直接個別に調整する必要がある場合があります。
  2. "名前"
    (重要またはあいまいな文字のみ)
    シンボルの目的、その範囲、例の説明...
  3. 「ニーモニック」
    ニーモニックは、HTML 内の文字の文字コードを表す " という形式の文字構成体です。これは、html 文書の html コードに直接挿入されます。ニーモニックはプロのタイプセッターの間で非常に人気があります。各ニーモニックには、そのシンボルの文字名 (指定 ) と、ブラウザのコードを読み取るためのシグナルとして機能し、モニター画面には表示されないサービス文字 (&) が含まれています。各ニーモニックの は、シンボルを特徴付ける英語の単語から形成されているため、一意で読みやすいです。

    ニーモニック (ギリシャ語) - 何かを記憶する技術。 ニーモニックは、記憶の対象が何かと連想状態になったときに、覚えにくい情報の認識を容易にするために使用されます。

  4. "コード"
    Code - & 形式の HTML の数値 10 進文字コード。 html ドキュメントの html コードに直接挿入されます。 数値の 10 進コードは、Unicode システムの文字の通し番号を示す数字と、ブラウザーがコードを読み取るためのシグナルとして機能し、モニター画面には表示されないいくつかのサービス文字 (& および #) で構成されます。 数値の 10 進コードは、その汎用性と認識の容易さから広く使用され、使用されています。

HTML の制御文字 (XHTML)

HTML の制御文字 (XHTML) は、Web ページの HTML レイアウトで使用される HTML 言語のサービス シンボルです。 これらの文字がないと HTML テキストを正しく表示できないため、これらの文字はすべてのブラウザでサポートされている必要があります。 制御文字はテキストには表示されず、キーボードから直接入力すると、ブラウザーによって句読点として解釈され、ページが画面に描画されるときに何らかのアクションが必要になります。

通常のテキストで制御文字を使用することは許可されており、制御文字は普遍的な概念を象徴し、ブラウザによって通常の印刷文字として扱われます。 このように HTML テキストでサービス シンボルを使用する場合、シンボル自体の値ではなく、その HTML コードを入力する必要があります。 繰り返しますが、そうしないと、ブラウザーはサービス シンボルを行動を促すフレーズとして認識し、モニター画面に HTML テキストを正しく表示できません。

制御文字とその HTML コードは、例外なくすべてのブラウザーで認識され、理解されます。 さまざまなブラウザさらに悪いことに、まったく表示されません。

構文と句読点

長さ N のスペース (通常のスペース)
長さ M のスペース (長いスペース)
- ソフトハイフン (非印字文字) - ­
ハイフン –
- 長さ N のダッシュ (通常のダッシュ) -
M長ダッシュ (全角ダッシュ)
. ドット .
, コンマ ,
省略記号 …
: 結腸 :
; セミコロン ;
! エクスクラメーション・マーク !
ǃ
? 疑問符 ?
@ "犬" @
* "星" *
# "格子" #
左上の一重引用符 ‘
右上の一重引用符 ’
右下の一重引用符 ‚
左上の二重引用符 “
右上の二重引用符 ”
右下の二重引用符 &bdquo „
« 二重左角引用符 (rus) « «
» 二重直角引用 (rus) » »
́ アクセント記号、例: Vasya ́
" アポストロフィ、例: you "I "
´ 急性、例: you'ya ´ ´
段落 (非印刷文字)
§ 段落 § §
ˆ アクセント(逆さの鳥) ˆ ˆ
ˆ
˜ 小さなチルダ ˜ ˜
˜
¦ 縦の点線 ¦ ¦
( 左括弧 (
) 右括弧 )
山かっこ左
山かっこ右
山かっこ左、バリアント
山かっこ右、バリアント
[ 角括弧左 [
] 角括弧右 ]
/ スラッシュ - スラッシュ文字 /
\ バックスラッシュ \
スラッシュ (除算記号)
ǀ 縦棒 ǀ
ǁ 二重縦棒 ǁ
上線、例: Vasya‾Vasya
¯ マクロン、例: Vasya¯vasya ¯ ¯

商標と通貨

+ プラス + +
マイナス -
= 等しい =
± プラスかマイナス ± ±
× 乗算記号 × ×
÷ 分割記号 ÷ ÷
ドット演算子 (文字列の途中) ·
アスタリスク演算子 (文字列の中間)
チルダ演算子
. リスト マーカー (行の中央) . •
¹ 上付き文字「1」 ¹ ¹
² 上付き文字「2」 ² ²
³ 上付き文字「3」 ³ ³
HTML の上付き文字と下付き文字 (XHTML)
タグを使用して挿入できます 、 それぞれ:
番号 上付き文字→ NUMBER 上付き文字
番号 添字→ NUMBER 下付き文字
½ 分数「半分」 ½ ½
分数「3分の1」
¼ 分数「4分の1」 ¼ ¼
¾ 四分の一 ¾ ¾
番号記号
% パーセント %
ppm ‰
° ° °
ストローク (分、フィート)
ダブルストローク (秒、インチ)
例 1: 30° 25′ 12″
例 2: 25 分 12
µ マイクロ µ µ
π 円周率 π π
ƒ 機能記号
(「積分」と混同しないでください)
ƒ ƒ
ƒ
積分
ゼロを取り消し、空のセット
(「直径」と混同しないでください)
直径 (斜線を引いたラテン語の「o」と混同しないでください)
ø ラテン語の「o」が斜めに交差 ø ø
Ø ラテン語の大文字「O」を斜めに切ります Ø Ø
製品記号
合計記号
ラジカル
(平方根または x ルート)
比例して
無限大
コーナー
直交 (垂直)
「だから」のサイン
ほぼ等しい
ほぼ等しい
等しくない
同じように
以下
以上
論理積
論理和
丸で囲んだプラス記号
(直和)
記号「円の掛け算」
(外積、オブザーバーからの矢印)
ʘ 丸に点
(オブザーバーの矢印)
ʘ

✵ ✵

トピックの続き:
ソリューション

多くのユーザーは、さまざまなブラウザーを使用しているときに、空白のページまたは必要のないページから開始する必要があるという事実に直面することがよくあります....