Smarty PHP7 対応。 Function create_function() is deprecated 対応。

Smarty_Compiler.class.php の $source_content = preg_replace ・・・の部分でエラーになるので、preg_replace_callback()使う方法に修正する情報はありますが、PHP7で  Function create_function() is deprecated  になるので、無名関数を利用するようにして、下記でOKのはず。

$source_content = preg_replace_callback($search, function($matches){

return $this->_quote_replace($this->left_delimiter)
.’php
. str_repeat(” “, substr_count(‘$matches[1]’, ” “))
.$this->_quote_replace($this->right_delimiter);
}, $source_content);

カテゴリー: php

【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