【PHP】Header Location できない

php にて、header(‘location: xxx’);
を行い、他のページへ遷移しようとした所、以下のようなメッセージが表示されて
遷移ができないということがあった。

Warning: Cannot modify header information – headers already sent by (output started at C:\xxxxxxx.php:1)
in yyyyyyyy.php on line 28

yyyyyyyy.php の 28 行目で header() をしようとしているのに、
xxxxxxxx.php の 1 行目で既に何かが出力されているので
header() できませんよ、というワーニング。

原因はxxxxxxxx.php の 1 行目にあるはずなので、見てみた所、
<?php とあるだけ。 スペースなども特にない。 思いがけずはまってしまったのだが、本当の原因はxxxxxxxx.php のファイルの文字コードが utf-8 の BOM あり で保存されていること。 なのでサクラなどのテキストエディタで開いて、 utf-8 の BOM なしで保存し直せば解決。 BOM というのは Byte Order Mark の略で、 そのファイルが Unicode であることが識別できるように 先頭につけられるデータのことだそうだ。

カテゴリー: php

sidebar-login ユーザー名が文字化け

ワードプレスのプラグイン「sidebar-login」で %username%部分で日本語が文字化け。

なんでかと思えば、class-sidebar-login-widget.php で1文字目を大文字にしています。

array( ucwords( $this->user->display_name ), $this->user->ID )

array( $this->user->display_name , $this->user->ID )
に修正して解決。

変な気を使わないでくださいという感じです。

 

エクリプスのソースの比較でタグ・空白の違いを無視する

エクリプスのSVNのヒストリでとかで、ソースの比較と、タブとスペースや、インデント幅の違いの為に「全行違う!」みたいになってしまう時があります。

そんな時はエクリプスのメニュー「ウィンドウ-設定」画面の「一般-比較パッチ」画面で、「空白を無視」にチェックONです。

すっきり比較できます。

PhpWordでcloneBlockが効かない

PhpWordのTemplate機能でcloneBlock()という、便利なメソッドが追加されていますが、イマイチ動かない。。。
xmlから{$CLONEME} ・・・・・ {$/CLONEME} のような指定ブロック部分を正規表現で抜き出して、繰り返させて再構成しているんですが、{$/CLONEME} の部分が複数タグに分割されてうまくヒットしないようです。実験的に無理やりヒットするように正規表現を曖昧にして動かしてみましたが、ワードファイルが壊れています、、、というようなメッセージが表示されてうまくいきません。テンプレートとするワードファイルの作り方で解決できるのかもしれませんが。。。
OfficeOpenXMLの仕様をきちんと把握して修正したり、対応要素を確認したりしないと危険で使えないですね。

cloneBlockが動けばsetValueのlimit=1でテンプレート変数にセットしていき、複数ページの単票形式の帳票に対応できると思ったんですが、、、今回は断念です。

慣れもあるかもしれませんが、PhpWordでの見た目調整はHTMLより 面倒なんでTemplate機能ががっつり使えるようになってほしいところです。

 

カテゴリー: php

PhpWordでborderInsideVSizeが効かない不具合の修正

phpでワードファイルを出力する「PhpWord」ですが、開発が止まっていると思っていたらGitHubのほうで開発が進んでいるようです。

セクション要素を追加しても改ページしないでテーブルの外枠余白を設定できたり、テーブルの縦横結合に対応していたりと便利になっていますが、TableStyleに設定したborderInsideVSizeが効かないというバグがありました。
下記で修正されます。
(こんな普通のバグがあるんですね。。。 )MarginBorder.php

(参考)https://github.com/PHPOffice/PHPWord/commit/5c8e100d4113641e93e1f150c0c84c2e15aeb3c6

日本語の情報が少ないので英語サイトメインで見ないといけません。。。

 

カテゴリー: php