概要
Tamperは、データの変換と修正を目的とした汎用プラグインシステムです。データ処理操作中に値を操作するための包括的なデータ変換プラグインセットを提供し、それらを連鎖させて使用できます。
このモジュールはデータ変換ワークフローの基盤として機能し、最も一般的にはFeeds Tamperモジュールと組み合わせてデータインポートに使用されます。Tamperは、テキスト操作、型変換、配列操作、日付/時刻フォーマット、フィルタリング、エンコード/デコードなど、40以上の組み込みプラグインを提供します。
各Tamperプラグインは入力値を受け取り、固有の変換ロジックを適用し、出力値を返します。プラグインは個別に設定でき、複雑なデータ処理パイプラインのために連鎖させることができます。プラグインアーキテクチャは、プラグイン検出のために従来のアノテーションと最新のPHP 8属性の両方をサポートしています。
Features
- カテゴリ別に整理された41以上の組み込みデータ変換プラグインを提供(テキスト、HTML、リスト、数値、日付/時刻、フィルター、その他)
- PHP 8属性と従来のアノテーションの両方をサポートするDrupalのプラグインシステムを使用したプラグインベースアーキテクチャ
- 大文字/小文字変換、検索/置換、正規表現置換、トリミング、切り詰め、URLエンコード/デコード、HTMLエンティティエンコード/デコード、音訳、タグ除去などのテキスト操作プラグイン
- explode(文字列を配列に分割)、implode(配列を文字列に結合)、重複値の除去、配列フィルタリングなどの配列/リスト操作
- 数学計算(加算、減算、乗算、除算)、数値フォーマット、集計関数(最小、最大、合計、平均、中央値、カウント)などの数値操作
- カスタムフォーマットをサポートしたUnixタイムスタンプとフォーマット済み日付文字列間の日付/時刻変換
- JSON、PHPシリアライズ、Base64、YAML形式のエンコード/デコードサポート
- Twigテンプレート処理、トークンベースの書き換え、フィールド値によるエンティティ検索、ソース間の値コピーなどの高度な機能
- 空の値、必須フィールド、キーワードマッチングに基づいて処理をスキップするフィルタリングプラグイン
- 国名からISOコードへの変換、米国州名から略称への変換などの地理ユーティリティ
- 条件付き処理フロー制御のためのSkipTamperDataExceptionとSkipTamperItemExceptionを使用した例外処理システム
- プラグインがtamperable itemコンテキストを必要とするか、オプションで使用するか、無視するかを指定するItemUsageシステム
Use Cases
データインポートのクリーンアップ
外部ソース(CSV、XML、JSON)からデータをインポートする際、Tamperプラグインを使用してデータをクリーンアップし正規化します。例えば、テキストフィールドから空白をトリミング、日付を適切なフォーマットに変換、国名をISOコードに標準化などができます。
テキスト変換パイプライン
複数のTamperプラグインを連鎖させて複雑なテキスト変換を実行:まずHTMLタグを除去し、次に小文字に変換し、空白をトリミングし、最後に最大長に切り詰めます。
エンティティ参照の解決
Entity Finderプラグインを使用して、インポートされたテキスト値(ユーザー名やタクソノミー用語名など)をエンティティ参照フィールドに使用できるエンティティIDに変換します。
データ検証とフィルタリング
RequiredおよびKeyword Filterプラグインを使用して、必須フィールドの欠落や不要なキーワードを含むなど、特定の基準を満たさないアイテムのインポートをスキップします。
ブール値フィールドのマッピング
さまざまなブール値のテキスト表現(yes/no、true/false、1/0、on/off)をチェックボックスフィールド用の適切なブール値に変換します。
URL処理
Absolute URLプラグインを使用して、インポートされたHTMLコンテンツ内の相対URLを絶対URLに変換し、インポート後もリンクが正しく機能するようにします。
カスタム値の生成
TwigまたはRewriteプラグインを使用して、複数のソースフィールドから計算値を生成します。例えば、名と姓のフィールドからフルネームを作成したり、タイトルからスラッグを生成したりできます。
日付フォーマットの標準化
strtotimeとtimetodateプラグインを使用して、外部ソースからのさまざまな日付文字列フォーマットをUnixタイムスタンプまたはISO形式の日付に変換します。
Tips
- Tamperプラグインは操作順序に従って連鎖させます - 前のプラグインの出力が後のプラグインの入力になります
- 空の値の処理を避けるために、チェーンの早い段階でSkip on Emptyプラグインを使用してください
- Entity Finderプラグインが正しく動作するには、適切なエンティティタイプとフィールド設定が必要です
- 複雑な変換には、すべてのソースデータに完全にアクセスできるTwigプラグインの使用を検討してください
- Find Replace REGEXを使用する場合、パターンを慎重にテストし、暴走置換を防ぐためにlimitオプションの使用を検討してください
- Copyプラグインはtamperable itemコンテキストを必要とし、あるフィールドから別のフィールドにデータを入力するのに便利です
- 集計関数(min、max、sumなど)は配列入力を期待します - ソースが文字列の場合は最初にExplodeを使用してください
- 外部ソースからのシリアライズされたデータを扱うにはEncode/Decodeプラグインを使用してください
Technical Details
Hooks 1
hook_tamper_info_alter
プラグインマネージャーによって検出されたTamperプラグイン定義をモジュールが変更できるようにします。
Troubleshooting 5
プラグインに渡されるデータが期待される型であることを確認してください。多くのテキスト操作プラグインは文字列入力を期待します。必要に応じて最初にCast to Integerなどの型変換プラグインを使用するか、データソースを確認してください。
エンティティタイプ、バンドル、フィールドの設定を確認してください。複雑なフィールドタイプの場合、フィールドカラムが正しく指定されていることを確認してください。検索値が保存されている値と完全に一致することを確認してください。
これはRequiredやKeyword Filterなどのフィルタープラグインの期待される動作です。基準が意図に合っていることを確認するためにフィルター設定を見直してください。
正規表現パターンにデリミタ(例:/pattern/)が含まれ、有効なPCRE構文であることを確認してください。パターンをPHPのpreg_replace関数で別途テストしてください。
strtotimeの場合、入力日付文字列が認識可能な英語形式であることを確認してください。非標準形式にはカスタム日付フォーマットオプションの使用を検討してください。タイムゾーンの影響に注意してください。
Security Notes 3
- Twigプラグインは、適切に設定されていない場合、機密データを公開する可能性のあるTwigテンプレートを実行します
- Find Replace REGEXの正規表現パターンは、ReDoS(正規表現サービス拒否)攻撃を防ぐために検証する必要があります
- Entity Finderプラグインはエンティティをクエリする際にアクセスチェックをバイパスします(accessCheck(FALSE)を使用) - 機密データを処理する際はこの点に注意してください