質問箱/4083
の編集
Top
/
質問箱
/
4083
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
Wikiを試したい方へ:
「この」Wikiは、
PukiWiki
のための公式Wikiです。
テスト書き込みなどは
お試しサイト
https://pukiwiki.osdn.jp/_trial/
をご利用ください
**[[質問箱/4083]] [#f2a967d0] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|全ファイルを一度に更新| |~バージョン|1.4.7| |~投稿者|[[ニヒー]]| |~状態|質問| |~投稿日|&new{2007-05-18 (金) 01:32:42};| ***質問 [#r30083a8] 全てのファイルを一気に更新する方法はありませんか? たくさんのページにそのページへのリンクを埋め込みたくて、よくある[ [ & p a g e ; > & f p a g e ; ] ]このようなソースなのですが、regexp.inc.phpを使って& p a g e ;と& f p a g e ;を置換しようと思ったのですが、出来なかったです。[[質問箱/4087]] それで、だったらFTPで全ファイルダウンロードしてローカルで置換してもう一回アップロードしなおせばいいかと思い、ためしに1ファイルやってみました。 ところが今度はまた別の現象で困っています、置換された& p a g e ;& f p a g e ;の文字はWIKI上で見たときに、ページ名に置き換わっているのですが、通常この様なソースは[ [ページ名 > パス/ページ名 ] ]と置き換わり、下のようなリンクとして働くはずなのです。 [[ページ名>パス/ページ名]] ところが、ソースを見ると[ [ & p a g e ; > & f p a g e ; ] ]のままなのです。 そのせいか、リンクとして働かず[ [ページ名 > パス/ページ名 ] ]と表示されているのです。 そこで、そのページをいったん開きソースを一切触ることなく、ページの更新をすると、[ [ページ名 > パス/ページ名 ] ]と置き換わり、下のようなリンクとして働くようになるのです。 [[ページ名>パス/ページ名]] これでは、置き換えたいページを一つ一つ1回ずつ開いて更新を押さなければいけません。 たくさんnページがあるので、大変です。 1度にページを全部更新できる裏技があれば、このローカル置換方法で出来るのですが。 同じ事で困っている人がいてもよさそうですが、検索したところ、過去に同じ質問は出ていなさそうです。 ***回答 [#e15161be] - teananさんの[[自作プラグイン/replace.inc.php>teanan:自作プラグイン/replace.inc.php]]を注意書きをよく読み納得した上で! -- &new{2007-05-18 (金) 08:59:36}; - 回答ありがとうございます。 そのプラグインを試してみたのですが、結局だめでした。 -- [[ニヒー]] &new{2007-05-19 (土) 12:59:13}; - 上の内容をわかりやすく書き直しました。 regexp.inc.phpとちがいreplace.inc.phpは文字自体の置換は出来たのですが、結局上の現象は起きてしまいます。 -- [[ニヒー]] &new{2007-05-19 (土) 13:01:14}; - 「現象」と書かれていることは仕様ではないでしょうか。PukiWiki上でページの更新が発生した際に件の置換が行われるわけで、ニヒーさんが挙げた例ではPukiWiki上でのページ更新は発生していないかのですから、当然です。「たくさんのページにそのページへのリンクを」付けたいなら、スキンを編集すればいいんじゃないですか?まぁ、この場合、厳密にページ本文ではないですが。また、ニヒーさんのやりたいことは簡単なPHPスクリプトでも可能でしょう。 --いい加減な例 <?php foreach (glob('*.txt') as $fn) { $fpage = pack('H*', substr($fn,0,-4)); $page = basename($fpage); $fc = file_get_contents($fn) . "\n[[$page>$fpage]]\n"; $fp = fopen($fn,'w'); fwrite($fp, $fc); fclose($fp); } ?> お試しの場合は、危険を理解した上、自己責任で。 -- &new{2007-05-19 (土) 21:00:00}; - これはどうやってつかうんですか? -- &new{2007-05-21 (月) 05:01:21}; - ページ更新が発生というのはつまり、page_write 関数が呼ばれたときではありませんでしたっけ?上のコードだと変換処理を行っている要素がないかと。 -- &new{2007-05-21 (月) 12:30:20}; - そもそも&fpage;や&page;の変換処理を使っていないので必要ありません。これはページデータファイルに直接[[階層を除いたページ名>階層を含む完全なページ名]]を追加するものです。取り敢えず簡単にやる例として書いてみましたが、お使いになられない方が賢明でしょう。 -- &new{2007-05-21 (月) 21:55:09}; #comment
**[[質問箱/4083]] [#f2a967d0] |RIGHT:70|LEFT:410|c |~カテゴリ|| |~サマリ|全ファイルを一度に更新| |~バージョン|1.4.7| |~投稿者|[[ニヒー]]| |~状態|質問| |~投稿日|&new{2007-05-18 (金) 01:32:42};| ***質問 [#r30083a8] 全てのファイルを一気に更新する方法はありませんか? たくさんのページにそのページへのリンクを埋め込みたくて、よくある[ [ & p a g e ; > & f p a g e ; ] ]このようなソースなのですが、regexp.inc.phpを使って& p a g e ;と& f p a g e ;を置換しようと思ったのですが、出来なかったです。[[質問箱/4087]] それで、だったらFTPで全ファイルダウンロードしてローカルで置換してもう一回アップロードしなおせばいいかと思い、ためしに1ファイルやってみました。 ところが今度はまた別の現象で困っています、置換された& p a g e ;& f p a g e ;の文字はWIKI上で見たときに、ページ名に置き換わっているのですが、通常この様なソースは[ [ページ名 > パス/ページ名 ] ]と置き換わり、下のようなリンクとして働くはずなのです。 [[ページ名>パス/ページ名]] ところが、ソースを見ると[ [ & p a g e ; > & f p a g e ; ] ]のままなのです。 そのせいか、リンクとして働かず[ [ページ名 > パス/ページ名 ] ]と表示されているのです。 そこで、そのページをいったん開きソースを一切触ることなく、ページの更新をすると、[ [ページ名 > パス/ページ名 ] ]と置き換わり、下のようなリンクとして働くようになるのです。 [[ページ名>パス/ページ名]] これでは、置き換えたいページを一つ一つ1回ずつ開いて更新を押さなければいけません。 たくさんnページがあるので、大変です。 1度にページを全部更新できる裏技があれば、このローカル置換方法で出来るのですが。 同じ事で困っている人がいてもよさそうですが、検索したところ、過去に同じ質問は出ていなさそうです。 ***回答 [#e15161be] - teananさんの[[自作プラグイン/replace.inc.php>teanan:自作プラグイン/replace.inc.php]]を注意書きをよく読み納得した上で! -- &new{2007-05-18 (金) 08:59:36}; - 回答ありがとうございます。 そのプラグインを試してみたのですが、結局だめでした。 -- [[ニヒー]] &new{2007-05-19 (土) 12:59:13}; - 上の内容をわかりやすく書き直しました。 regexp.inc.phpとちがいreplace.inc.phpは文字自体の置換は出来たのですが、結局上の現象は起きてしまいます。 -- [[ニヒー]] &new{2007-05-19 (土) 13:01:14}; - 「現象」と書かれていることは仕様ではないでしょうか。PukiWiki上でページの更新が発生した際に件の置換が行われるわけで、ニヒーさんが挙げた例ではPukiWiki上でのページ更新は発生していないかのですから、当然です。「たくさんのページにそのページへのリンクを」付けたいなら、スキンを編集すればいいんじゃないですか?まぁ、この場合、厳密にページ本文ではないですが。また、ニヒーさんのやりたいことは簡単なPHPスクリプトでも可能でしょう。 --いい加減な例 <?php foreach (glob('*.txt') as $fn) { $fpage = pack('H*', substr($fn,0,-4)); $page = basename($fpage); $fc = file_get_contents($fn) . "\n[[$page>$fpage]]\n"; $fp = fopen($fn,'w'); fwrite($fp, $fc); fclose($fp); } ?> お試しの場合は、危険を理解した上、自己責任で。 -- &new{2007-05-19 (土) 21:00:00}; - これはどうやってつかうんですか? -- &new{2007-05-21 (月) 05:01:21}; - ページ更新が発生というのはつまり、page_write 関数が呼ばれたときではありませんでしたっけ?上のコードだと変換処理を行っている要素がないかと。 -- &new{2007-05-21 (月) 12:30:20}; - そもそも&fpage;や&page;の変換処理を使っていないので必要ありません。これはページデータファイルに直接[[階層を除いたページ名>階層を含む完全なページ名]]を追加するものです。取り敢えず簡単にやる例として書いてみましたが、お使いになられない方が賢明でしょう。 -- &new{2007-05-21 (月) 21:55:09}; #comment
テキスト整形のルールを表示する