Search and Replace Scanner
プレーンテキストまたは正規表現を使用して、Drupalエンティティの設定可能なテキストフィールドに対して検索と置換操作を実行します。
scanner
インストール
composer require 'drupal/scanner:8.x-1.0'
概要
Search and Replace Scannerモジュールは、Drupalサイト向けの強力な一括検索・置換機能を提供します。複数のエンティティタイプにわたる設定可能なテキストフィールドに対して、正規表現またはプレーンテキストのマッチングを実行できます。会社名の更新、URLの修正、大量のコンテンツにわたる繰り返しのコンテンツエラーの修正などのタスクに非常に役立ちます。
Drupalの組み込み検索とは異なり、ScannerはHTML文字列やその他通常は無視されるコンテンツを検索できます。このモジュールは置換時に新しいリビジョンを作成するため、必要に応じて変更を元に戻すことができます。また、すべての置換操作を追跡し、特定の置換アクションによって影響を受けたすべてのエンティティを元に戻すことができる包括的な取り消しシステムも提供します。
Scannerは標準でNodeとParagraphsをサポートしていますが、拡張可能なプラグインアーキテクチャにより、開発者はTaxonomy Termやカスタムエンティティなどの追加エンティティタイプのサポートを追加できます。このモジュールには、多言語コンテンツ、ネストされたParagraph構造、フォーマット済みテキスト、プレーンテキスト、文字列、リンクフィールドを含むさまざまなフィールドタイプの洗練された処理が含まれています。
Features
- 設定可能なエンティティフィールド全体でのプレーンテキスト検索と置換
- 完全な正規表現構文をサポートした正規表現検索と置換
- 正確なマッチングのための大文字小文字を区別する検索オプション
- 部分的な単語の一致を避けるための完全一致オプション(例:「run」は「running」にマッチしません)
- 前方テキストと後方テキストのフィルターにより、周囲のコンテキストに基づいてマッチを絞り込み
- 標準でNodeとParagraphsをサポートし、他のエンティティ用の拡張可能なプラグインシステム
- 公開済みNodeのみに検索を制限
- 言語固定または全言語検索による多言語コンテンツのサポート
- 簡単なロールバックのための置換時の自動リビジョン作成
- 特定の置換操作からすべてのエンティティを元に戻す包括的な取り消し機能
- ハイライトされたマッチとコンテキストスニペットを含む検索結果の表示
- 自動実行時間延長による大規模操作のバッチ処理
- 効率的なワークフローのための設定可能なデフォルト検索オプション
- 異なるデータベースバージョン間のMySQL/MariaDB単語境界互換性の処理
- テーマ適用可能な検索結果テンプレート
- string、text、text_long、text_with_summary、linkフィールドタイプをサポート
Use Cases
会社名の変更
会社名が変更された場合、Scannerはすべてのコンテンツにわたる旧社名のすべてのインスタンスを検索して置換できます。完全一致を使用して部分的な置換を避け、取り消し機能により間違いがあった場合の安全性を提供します。
URL移行
ドメイン間でコンテンツを移動したり、URL構造を変更したりする際、Scannerはすべての内部リンクを更新できます。正規表現を使用することで、複雑なURLパターンを体系的にマッチさせて変換できます。
コンテンツの標準化
非公式な用語を公式のものに置き換えることで、サイト全体の用語を標準化します。例えば、「ウェブサイト」を「Webサイト」に置き換えたり、製品名を現在のブランディングに更新したりできます。
HTMLのクリーンアップ
不要なHTMLタグを検索して削除または置換したり、壊れたマークアップを修正したり、非推奨のHTMLを最新の標準に更新したりします。正規表現モードにより、HTML構造の複雑なパターンマッチングが可能です。
多言語コンテンツの更新
複数の言語バージョンにわたってコンテンツを更新する必要がある場合、Scannerはすべての翻訳を同時に処理するか、特定の言語をターゲットにして、ローカライズされたコンテンツ間の一貫性を確保できます。
繰り返しの誤字の修正
多くのコンテンツにわたって繰り返し行われた誤字を修正します。大文字小文字を区別する検索を使用して正確なエラーにマッチさせ、完全一致を使用して意図しない変更を避けます。
連絡先情報の更新
サイトのコンテンツ全体の複数の場所に表示される電話番号、メールアドレス、住所を更新します。
Tips
- 大規模な置換を実行する前に、必ずデータベースをバックアップしてください。Scannerは強力で、サイト全体のコンテンツを変更できます。
- 置換を実行する前に、まず検索機能を使用して何が変更されるかをプレビューしてください。
- 複雑なパターンの場合、すべてのフィールドを有効にする前に、単一のフィールド/コンテンツタイプで正規表現をテストしてください。
- 「前方テキスト」と「後方テキスト」オプションは、複雑な正規表現なしでマッチを絞り込むのに便利です。
- HTMLを置換する場合、HTMLは正規言語ではないため、正規表現モードには注意してください。代わりに前方/後方テキストオプションを検討してください。
- 新しいリビジョンは自動的に作成されるため、取り消し機能を使用しなくても、Drupalのリビジョンインターフェースを通じて個々のエンティティをいつでも元に戻すことができます。
- 多言語サイトの場合、すべての言語で置換するか、1つの言語だけで置換するかを検討してください。言語フィルターにより、翻訳への意図しない変更を防ぐことができます。
- 「検索と置換を実行」権限を持つユーザーは、通常編集できないエンティティも変更できます。この権限は慎重に付与してください。
- 取り消し機能はすべての置換を追跡します。必要に応じて、取り消しリストを定期的に確認して古い操作をクリーンアップしてください。
Technical Details
Admin Pages 5
/admin/content/scanner
検索語の入力、置換テキストの指定、検索オプションの設定、結果の表示を行うメインの検索・置換インターフェースです。ユーザーは置換を実行する前にマッチをプレビューするための検索を実行できます。
/admin/config/content/scanner
デフォルトの検索オプション、検索可能なエンティティタイプとフィールドの選択、データベース互換性設定を行う設定ページです。
/admin/content/scanner/confirm
置換操作を実行する前に表示される確認ページです。検索語と置換テキストを表示し、続行する前に確認を求めます。
/admin/content/scanner/undo
取り消されていない過去の置換操作をすべて一覧表示します。日付、検索語、置換テキスト、影響を受けたエンティティ数を表示し、各操作の取り消しリンクを提供します。
/admin/content/scanner/undo/{id}/confirm
以前の置換操作を取り消す前に表示される確認ページです。元に戻すと、影響を受けたすべてのエンティティが以前のリビジョンに復元されます。
権限 3
Hooks 1
hook_scanner_info_alter
モジュールがScannerプラグインの定義を変更できるようにします。エンティティタイプのデフォルトのScannerハンドラーをカスタム実装に置き換えるために使用できます。
Troubleshooting 6
管理設定の「正規表現の単語境界」設定を確認してください。データベースがMySQL 8.0.4以降の場合、「ICUモード」または「自動検出」に設定されていることを確認してください。古いMySQLとMariaDBバージョンでは「Henry Spencerモード」が必要です。
モジュールはPHPのmax_execution_timeを5分に延長しようとします。それでも置換がタイムアウトする場合は、max_execution_time制限の増加についてホスティングプロバイダーに連絡するか、選択するフィールドを減らして置換を小さなバッチに分割してください。
Scannerはユーザーセッションに紐づいた一時的なストレージを使用します。ユーザーごとに一度に1つのインスタンスしか実行できません。別の操作を開始する前に、現在の操作を完了またはキャンセルしてください。
取り消しはエンティティを以前のリビジョンに復元します。置換と取り消しの間にエンティティに他の変更が加えられた場合、それらの変更は失われる可能性があります。大規模な置換操作の前には必ずデータベースをバックアップしてください。
管理 > レポート > ステータスレポートに移動して、検出されたデータベースタイプとバージョンを確認してください。次に、管理 > 環境設定 > コンテンツ作成 > Search and Replace Scannerで単語境界設定をデータベースに合わせて更新してください。
置換機能には「検索と置換を実行」権限が必要です。「検索のみを実行」権限のみを持つユーザーは検索できますが置換はできません。管理 > ユーザー > 権限でユーザー権限を確認してください。
Security Notes 5
- 「検索と置換を実行」権限を持つユーザーは、それらのエンティティへの通常の編集アクセス権がなくてもエンティティを変更できます。この権限は信頼できるユーザーにのみ付与してください。
- 「Scanner設定の管理」権限は、どのフィールドを検索できるかを制御します。これにより、置換権限を持つユーザーでも変更できるコンテンツが制限されます。
- 正規表現置換はPHPのpreg_replace関数を実行します。検索語はユーザーが提供しますが、置換はテキスト置換に制限されています。
- Scannerはすべての変更のリビジョン履歴を作成し、変更の監査証跡を提供します。
- データベース資格情報は単語境界の互換性のためにMySQL/MariaDBバージョンを検出するために使用されますが、インターフェースには公開されません。