ホーム

OFF-SOFT.net

OFF-SOFT.net

ウェブやソフトウェアに関するサポート&情報サイトです。サイト構築からソフトウェアの作成、利用まであなたの助けになるかも・・・・しれません。たぶん・・。

ReReplacerで自動的に文字列を置換する

公開日| 2009年07月02日 | 1つのコメントがあります。
概要 :
 Joomla!では、記事の一斉置換などの機能がありません。 そのため、全体的な記事の修正を行うには、その記事の一つ一つ修正しなければなりません。

 今回、その修正を一時的にも助けてくれるReReplacerというエクステンションについて記述します。
一斉置換をしてくれる(有料の)コンポーネントなどもありますが、ReReplacerは、記事の表示時に、一時的に文字列を置換するものです。 記事を本当に置換して、データベースへ保存するわけではありません。
 ただ、使い方によっては、結構便利なエクステンションだとおもいましたので、記事を書くことにしました。

もっと、Joomla!やPHP、Apacheについて詳しく知りたい方は、以下の本なども良いと思います。
本から学ぶことは多いと思います。ネットだけでは判らない様々な事に気づかされます。


Joomla!Pro Book オープンソースCMS導入&カスタマイズガイド

初めてのPHP & MySQL 第2版

Apacheハンドブック
早速、使ってみましょう
先のダウンロードサイトから、ZIPファイルをダウンロードし、インストールを行います。 (メニューの [エクステンション] - [インストール/アンインストール] から行ってください。)

インストールの後、[コンポーネント] - [ReReplacer]で置換した文字列を編集します。

画面右上の新規ボタンをクリックします。




パラメータ名 説明
詳細
公開 いいえ ●はい
この置換情報を有効にするか否かを指定します。
名前 この置換情報の名前を入力します。
説明 いいえ ●はい
この置換情報の説明を入力します。
Search & Replace
検索 検索する文字列を入力します。
Replace 置換する文字列を入力します。
Syntax help ●非表示 表示
ここで利用できる特別な構文のヘルプを表示します。
ここで"表示"を選択すると、この画面のすぐ下にヘルプ情報が表示されます。
Search options
Regular Expressions ●いいえ はい
検索文字列、置換文字列に正規表現を有効にするか否かを指定します。
Word Search ●いいえ はい
単語検索を有効にするか否かを指定します。
Word Search ●いいえ はい
単語検索を有効にするか否かを指定します。
単語検索は、単語の違いを検出します。
例えば、'foo'を検索した時、'foobar' や 'foot' 別の単語として検索にヒットしません。
しかし、一つの単語として扱われない 'foo3' や 'foo-bar' は、ヒットします。
※日本語は、恐らく、正しく動作しないでしょう。
Use 'newline' modifier ●いいえ はい
dot(.)を新しい行とみなします。
※日本語は、恐らく、正しく動作しないでしょう。
Case sensitive ●いいえ はい
大文字・小文字を区別して検索します。
※日本語には、意味がありません。英字のみ有効でしょう。
Thorough ●いいえ はい
ここを"はい"と指定すると、常に、表示切り替えで、同じ文字列の検索処理が100回行われます。
つまり、置換することで、また、検索対象の文字列ができてしまうようなパターンでない限り、ここは、"いいえ"を選択すべきです。
(多分・・・。英訳が間違ってたらすみません。)
Search areas
Enable in area
  • Content+
    -- コンテンツの中だけ検索・置換します。
  • Component+
    -- コンポーネントの中だけ検索・置換します。
  • Body
    -- BODYタグの範囲内で検索・置換します。
  • Everywhere
    -- ページの全てを検索・置換します。

検索・置換する範囲を指定します。
記事の中だけでよければ、"Content+"を選択します。
Enable in title ●いいえ はい
検索・置換する範囲を指定します。
記事のタイトルも検索・置換の範囲とするか否かを指定します。
このパラメータは、Enable in area = "Content+" の場合のみ有効です。
Enable in author ●いいえ はい
記事の投稿者も検索・置換の範囲とするか否かを指定します。
このパラメータは、Enable in area = "Content+" の場合のみ有効です。
Only between (start) Only between (end) と一緒に使います。
Only between (start)とOnly between (end) が指定されている場合、 その2つの文字列の範囲内が、検索・置換の対象範囲となります。
例)
'123 xxx123xxx456xxx456'のような文字列があったとした場合、 '123'と'456'の間で'x'を'y'に置換したいなら、
Only between (start)='123'
Only between (end)='456'
と指定します。
結果、
'123 xxx123yyy456xxx456'
となります。

※指定された文字列の範囲の最も短い範囲で、検索・置換が実施されることに注意してください。
Only between (end) Only between (start) と一緒に使います。
上記説明を参照してください。
Enable in feeds いいえ ●はい Only
Feed情報も検索・置換の範囲とするか否かを指定します。
Enable in Admin ●いいえ はい Only
管理画面も検索・置換の範囲とするか否かを指定します。
Tags
Enable in tags いいえ ●はい Only
(HTML)タグの中も検索・置換の範囲とするか否かを指定します。
Limit to tag selection ●いいえ はい
'はい'を選択すると、 'Tag selection'を設定できるフィールドが、画面に表示されます。
そこに指定された(HTML)タグの範囲内だけを検索・置換の範囲とします。
'Tag selection'には、
tag_name_1[parameter_name_1, parameter_name_2] tag_name_2[parameter_name_1, parameter_name_2]
の形式で記述します。

例)
全てのタグの 'alt' と 'title' の値と、'a' タグを検索・置換した場合、以下のように記述します。

*[alt,title] a[*]

*: 全ての意味になります。
Sections / Categories
Limit to Sections / Categories ●いいえ はい
特定のセクションとカテゴリのみを検索・置換の範囲とするか否かを指定します。
'はい'とした場合、
'Sections / Categories'のリストが、画面に表示されるので、そこで、対象としたセクションとカテゴリを選択します。
User Group Levels
Limit to User Group Levels ●いいえ はい
特定のユーザグループでのみを検索・置換の範囲とするか否かを指定します。
'はい'とした場合、
'User Group 'のリストが、画面に表示されるので、そこで、対象としたいユーザグループを選択します。
テンプレート
Limit to Templates ●いいえ はい
特定のテンプレートでのみを検索・置換の範囲とするか否かを指定します。
'はい'とした場合、
'テンプレート'のリストが、画面に表示されるので、そこで、対象としたいテンプレートを選択します。

置換情報の編集・保存を終えたら、プラグイン管理から"System - ReReplacer"を有効にしましょう。
(メニューの [エクステンション] - [プラグイン管理] から"System - ReReplacer"を探してください。)


置換文字列がある記事などを確認してみましょう。うまく置換されていると思います。

以下のページは、ReReplacerの動作サンプルです。

置換のパターンは、以下の左の文字列を右側のようにHTML形式で大文字に置換しています。
1
hijklmno --> <span class="red"><b>HIJKLMNO</b></span>
Test ReReplacer



上段が、オリジナルの文字列です。
下段が、ReReplacerで置換した文字列です。


置換アイテムの説明に日本語を入力すると、置換情報のリストで、説明欄が文字化けが発生します。


この場合、以下のphpファイルを書き換えると正しく表示されます、。

[/administrator/components/com_rereplacer/views/list/tmpl/default.php]
153行目を以下のように変更すると説明部分が、文字化けしません。
153
154
	//	$_description = explode( '---', htmlentities( $_row->description ) );
		$_description = explode( '---', htmlentities( $_row->description ,ENT_COMPAT,'UTF-8' ) );

インポート、エクスポート機能
このエクステンションには、インポート、エクスポート機能があります。 これは、独自のタグ情報とともに、置換アイテムからテキストへの出力(エクスポート)し、 そのテキストと同じフォーマットであれば、そのテキストファイルから置換アイテムを作成(インポート)することができます。

以下は、エクスポートしたテキストファイルの内容です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<RR_ITEM_START>
<RR_KEY>name<RR_VAL>テスト置換<RR_END>
<RR_KEY>description<RR_VAL>テスト置換の説明<RR_END>
<RR_KEY>search<RR_VAL>TEST<RR_END>
<RR_KEY>replace<RR_VAL>テスト<RR_END>
<RR_KEY>params<RR_VAL>@syntax_help=0
regex=0
word_search=0
s_modifier=1
casesensitive=0
thorough=1
area=articles
enable_in_title=0
enable_in_author=0
between_start=
between_end=
enable_in_feeds=1
enable_in_admin=0
enable_tags=1
limit_tagselect=0
tagselect=*[title,alt] meta[content]
limit_secscats=0
other_secscats_doreplace=0
other_secscats_replace=
limit_usergrouplevels=0
usergrouplevels=0
other_usergrouplevels_doreplace=0
other_usergrouplevels_replace=
limit_templates=0
other_templates_doreplace=0
other_templates_replace=
<RR_END>
<RR_KEY>ordering<RR_VAL>0<RR_END>
<RR_ITEM_END>

各パラメータは、上記と照らせば、大方、ご理解いただけると思います。

以下は、インポート時の画面です。ファイルを選択して、アップロードボタンをクリックするとインポートされます。



結構、細かい指定ができます。うまく使えば、このエクステンションは、全ての記事に影響する変換も簡単に置換できます。
ただし、これを多用すると、ページの切り替えで重たくなると思いますので、最小限のご利用が良いと思います。

変更内容が、恒久的な変更なら、このエクステンションは、全ての情報の変更までの、仮処置として使うこともできると思います。

コメント

1つのコメントがあります。 “ReReplacerで自動的に文字列を置換する”


  1. datshay
    2011年07月08日 @ 20:04:51

    Thanks …. my site was just messed up with small configuration mistake…. your tut solved mine prob. so thanks a lot….

コメントをどうぞ







  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ