投稿者: tech
PHP小ネタ @の意味
PHPのサンプルソースをネット上で検索していると、自分が普段使わない言語機能を使っているソースに出くわすことがあります。
たとえば、以下のようなソースの@の意味、すぐに分かりますでしょうか?
$val = @$data[$key];
僕は正直、意味がまったく分かりませんでした。
ポインタのアドレス参照でもないしなー、と思ってネット上で調べようとしたところ、これがなぜだか分からない……
そもそもこの@が文法上のどのカテゴリに入るものなのかがわからなかったので、うまくヒットする検索が中々出来なかったのですね。
結果を言いますと、この@は、
PHPEXCELでEXCEL1ファイルで表など記述済3シートをそれぞれコピーして業務にあったEXCELを出力する方法例
続きを読む PHPEXCELでEXCEL1ファイルで表など記述済3シートをそれぞれコピーして業務にあったEXCELを出力する方法例
Cake2で複数ファイルをUPする
Cake2で複数ファイルをHtml5の機能を使って簡単に上げれるとあったので試してみました。
$this->Form->input(‘Model.field’, array( ‘type’ => ‘file’));
で単体のファイルが上げれるところを
$this->Form->input(‘Model.field’, array(‘type’ => ‘file’, ‘multiple’));
と書くだけで簡単に複数ファイルが上げれるということでやってみたのですが動かない・・・
何でだ!!とはまる事一時間ほど・・・
よくよく見てみるとfieldの後ろに「.」ピリオドが要るではないか!!という事で
$this->Form->input(‘Model.field.’, array(‘type’ => ‘file’, ‘multiple’));
と書いてあげるとすんなり動いてくれました。
最後のピリオドはお忘れずということでした。
MVCモデルを勉強しました
PHP7、RC版の配布始まる!
2015年、政治的にも経済的にも気象的にもいろんなことが起こって激動の日本ですが、世のWEBアプリケーションエンジニアの皆さま的には2015年の一大事は
PHP7のリリース
になるかもしれません(^^)
PHP4から5になるのに4年かかりましたが、6が欠番になる騒動も含めて11年ぶりのメジャーヴァージョンアップになるわけですから。
もうRC(リリース候補)版のリリースは始まっておりまして、
ソースはコチラ
すでにRC版でいろいろ試しておられるエンジニアの方も多いと思われますが、実際にPHP7の正式版がリリースされるのは11月になりそう、とのことです。
当初は10月半ば、と言われていたので、それほど大きな遅延はない、という感じでしょうか。
個人のベンチマークテストではPHP7.0は5.6の2倍近く速い結果が出たりしてるそうなので、楽しみです。
とは言うものの、
チェックボックスをラジオボタンのような動作にする。
RSS内の画像を取得する
RSSで記事一覧を取得する際に画像を一緒に取得して欲しいという要望があったのでこんな形で取ってみました。
$rssurl = "http://xxxxxx.xml";
$xml_data = file_get_contents($rssurl);
$rssdata = XML_unserialize($xml_data);
foreach ($rssdata['rss']['channel']['item'] as $val){
// リンクのURLを見に行って最初に現れる画像のsrc取得
$url = $val['link'];
$src = getChildRss($url);
if (!empty($src)){
$img = "
";
echo $img;
}
}
}
// リンクのRSSを見に行って最初に現れる画像のsrc取得
function getChildRss($url){
$xml_data = file_get_contents($url);
$rssdata = XML_unserialize($xml_data);
if (!empty($rssdata['rss']['channel']['item'])){
foreach ($rssdata['rss']['channel']['item'] as $val){
// 最初に現れるimgタグ取得
preg_match_all("/
/", $val['content:encoded'], $img);
if (count($img[0]) !== 0) {
// imgタグ内のsrc取得
preg_match_all('/src="(.+?)"/', $img[0][0], $src);
if (count($src[0]) !== 0) {
return $src[1][0];
}
}
}
}
return "";
}
TCPDFでCODE39のバーコードの読取精度が悪いので調整してみました。
この前の案件でTCPDFでCODE39のバーコードを表示することがあり、
バーコード小さくしてを印刷すると黒い線が太くて白い部分がつぶれるので
TCPDF自体を修正し、黒線を細くすることで読取精度を上げてみました。
以下修正個所です。
foreach ($arrcode['bcode'] as $k => $v) {
// modified $v['w'] にバーコード1線分の太さ1か3で入っているので細さを調整したい数値(0.1)をセット
$bw= ($v['w'] > 1) ? $v['w'] * $xres - 0.1 : $v['w'] * $xres + 0.1;
if ($v['t']) {
// draw a vertical bar
$ypos = $y + $vpadding + ($v['p'] * $barh / $arrcode['maxh']);
$this->Rect($xpos, $ypos, $bw, ($v['h'] * $barh / $arrcode['maxh']), 'F', array(), $style['fgcolor']);
}
$xpos += $bw
}
これで認識率上がりました。0.1の数値を調整することでもうちょっと認識率上げれそうでした。
入力された情報が前回値と変わっている場合に、入力文字を変更(赤く)する方法
cakephp入力フォームで、前回と変更になった入力値は入力文字を変更(赤く)して表示したい場合のサンプルです。
前提条件
前回入力した値と今回入力する値は別で情報を管理します。
その上で、前回と今回の差がわかる状態で判断します。
モデルはSampleを使用します。