<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHP &#8211; トモデジ  tomodigi.com</title>
	<atom:link href="https://tomodigi.com/category/web/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://tomodigi.com</link>
	<description>デジタルもアナログも</description>
	<lastBuildDate>Mon, 09 Jan 2017 00:35:40 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>PHPExcelで Fatal error: &#8216;break&#8217; not in the &#8216;loop&#8217; or &#8216;switch&#8217; context と表示される</title>
		<link>https://tomodigi.com/web/php/phpexcel%e3%81%a7-fatal-error-break-not-in-the-loop-or-switch-context-%e3%81%a8%e8%a1%a8%e7%a4%ba%e3%81%95%e3%82%8c%e3%82%8b/</link>
					<comments>https://tomodigi.com/web/php/phpexcel%e3%81%a7-fatal-error-break-not-in-the-loop-or-switch-context-%e3%81%a8%e8%a1%a8%e7%a4%ba%e3%81%95%e3%82%8c%e3%82%8b/#comments</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Sun, 08 Jan 2017 19:20:49 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHPExcel]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2796</guid>

					<description><![CDATA[PHPExcelはExcelファイルの入出力ができる便利なライブラリですが、少し前のものだと、PHP7でエラーが出てしまうことがあるようです。 swichやwhile文で使うべきbreakがif文などにあるとこのエラーが &#8230; <a href="https://tomodigi.com/web/php/phpexcel%e3%81%a7-fatal-error-break-not-in-the-loop-or-switch-context-%e3%81%a8%e8%a1%a8%e7%a4%ba%e3%81%95%e3%82%8c%e3%82%8b/" class="more-link">続きを読む <span class="screen-reader-text">PHPExcelで Fatal error: &#8216;break&#8217; not in the &#8216;loop&#8217; or &#8216;switch&#8217; context と表示される</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>PHPExcelはExcelファイルの入出力ができる便利なライブラリですが、少し前のものだと、PHP7でエラーが出てしまうことがあるようです。</p>
<p>swichやwhile文で使うべきbreakがif文などにあるとこのエラーが出ます。PHP5系まではそのまま通ってしまいます。</p>
<p>PHPExcelはこのサイト（<a href="https://phpexcel.codeplex.com/">phpexcel.codeplex.com</a>）での更新は止まっていますが、github（<a href="https://github.com/PHPOffice/PHPExcel">github.com/PHPOffice/PHPExcel</a>）では修正されています。バージョンは1.8で同じですが、上記のエラーは出なくなりました。2017/1/9時点の最新版では、PHPの対応バージョンは5.2以上となっています。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/php/phpexcel%e3%81%a7-fatal-error-break-not-in-the-loop-or-switch-context-%e3%81%a8%e8%a1%a8%e7%a4%ba%e3%81%95%e3%82%8c%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>WordPressのログイン画面が500 Internal Server Errorでログインできない</title>
		<link>https://tomodigi.com/web/wordpress/wordpress%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%94%bb%e9%9d%a2%e3%81%8c500-internal-server-error%e3%81%a7%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84/</link>
					<comments>https://tomodigi.com/web/wordpress/wordpress%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%94%bb%e9%9d%a2%e3%81%8c500-internal-server-error%e3%81%a7%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Sat, 23 Jul 2016 19:45:16 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[レンタルサーバー]]></category>
		<category><![CDATA[CORESERVER]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2655</guid>

					<description><![CDATA[勉強用インストールして放置していたWordpressにバージョンアップのお知らせが来たので、アップデートしようとしたところ、ログイン画面(wp-login.php)が500 Internal Server Errorでロ &#8230; <a href="https://tomodigi.com/web/wordpress/wordpress%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%94%bb%e9%9d%a2%e3%81%8c500-internal-server-error%e3%81%a7%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84/" class="more-link">続きを読む <span class="screen-reader-text">WordPressのログイン画面が500 Internal Server Errorでログインできない</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>勉強用インストールして放置していたWordpressにバージョンアップのお知らせが来たので、アップデートしようとしたところ、ログイン画面(wp-login.php)が500 Internal Server Errorでログインできない現象があったので、メモです。</p>
<p>結論から書くと、PHPのバージョンを5.4から5.6に変更していたことと、それに対応していないプラグインがあったことが原因です。ログインができないだけで、ページは一応表示できます。</p>
<p>環境は以下の通りです。</p>
<p>Coreserver(CORE-A)<br />
Wordpress 4.5.3 （4.4.4でも同様）</p>
<p>CoreserverはドメインごとにPHPのバーションがコントロールパネルで変更できるので、一旦はログイン可能なバージョンに変更します。今回は5.5と5.6でログインできませんでした。また、5.4と7.0ではログインできました。</p>
<p>必要なバージョンアップを行い、一度バージョンを変えて試してみます。それでもログイン画面が表示されない場合は、プラグインを全てOFFにすると、おそらくログインできるはずです。</p>
<p>あとは、プラグインの変更や更新をした後、PHPのバージョンを戻してみて試します。</p>
<p>今回原因となったプラグインは、ZenCacheでした。プラグインの名称が変わり（Comet Cache）、ZenCacheそのものは更新が停止しています。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/wordpress/wordpress%e3%81%ae%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e7%94%bb%e9%9d%a2%e3%81%8c500-internal-server-error%e3%81%a7%e3%83%ad%e3%82%b0%e3%82%a4%e3%83%b3%e3%81%a7%e3%81%8d%e3%81%aa%e3%81%84/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>(PHP)ディレクトリを再帰的に作成</title>
		<link>https://tomodigi.com/web/php%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%82%92%e5%86%8d%e5%b8%b0%e7%9a%84%e3%81%ab%e4%bd%9c%e6%88%90/</link>
					<comments>https://tomodigi.com/web/php%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%82%92%e5%86%8d%e5%b8%b0%e7%9a%84%e3%81%ab%e4%bd%9c%e6%88%90/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Wed, 02 Mar 2016 19:32:54 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[レンタルサーバー]]></category>
		<category><![CDATA[ディレクトリ]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2559</guid>

					<description><![CDATA[PHPでディレクトリを再帰的に作成するときのメモです。 &#8216;dir1/dir2/dir3&#8217;のような深いディレクトリを一度で作成する場合はmkdirに第3引数にtrueをつけて使用します。 $dirN &#8230; <a href="https://tomodigi.com/web/php%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%82%92%e5%86%8d%e5%b8%b0%e7%9a%84%e3%81%ab%e4%bd%9c%e6%88%90/" class="more-link">続きを読む <span class="screen-reader-text">(PHP)ディレクトリを再帰的に作成</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>PHPでディレクトリを再帰的に作成するときのメモです。</p>
<p>&#8216;dir1/dir2/dir3&#8217;のような深いディレクトリを一度で作成する場合はmkdirに第3引数にtrueをつけて使用します。</p>
<pre><code class="php">$dirName = 'dir1/dir2/dir3';
$defaultUmaskNum = umask();
umask(0);
mkdir($dirName,0755,true);
umask($defaultUmaskNum);
</code></pre>
<p>mkdirの第2引数はパーミッションの設定です。数値で指定します。&#8217;0755&#8217;などのように文字列で指定するとエラーは出なくとも、おかしなパーミッションになることがあります。<br />
また、umaskはデフォルトのパーミッションの設定です。mkdirに第2引数からumaskの値を引いた値が設定されるので今回は便宜的に0にして、処理後に戻しています。<br />
PHP公式ではパーミッションの設定はumaskを変更するのではなく、chmodが推奨されていますが、作成される全てのディレクトリのパーミッションを同時指定することはできません。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/php%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%82%92%e5%86%8d%e5%b8%b0%e7%9a%84%e3%81%ab%e4%bd%9c%e6%88%90/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CoreserverのPHPでエラーを表示する</title>
		<link>https://tomodigi.com/web/%e3%83%ac%e3%83%b3%e3%82%bf%e3%83%ab%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc/coreserver%e3%81%aephp%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e8%a1%a8%e7%a4%ba%e3%81%99%e3%82%8b/</link>
					<comments>https://tomodigi.com/web/%e3%83%ac%e3%83%b3%e3%82%bf%e3%83%ab%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc/coreserver%e3%81%aephp%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e8%a1%a8%e7%a4%ba%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Sun, 13 Dec 2015 19:02:32 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[レンタルサーバー]]></category>
		<category><![CDATA[CORESERVER]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2530</guid>

					<description><![CDATA[デバッグ用途などに使います。 表示したいディレクトリに「.user.ini」を設置します。 display_errors = On error_reporting = E_ALL &#38; ~E_NOTICE erro &#8230; <a href="https://tomodigi.com/web/%e3%83%ac%e3%83%b3%e3%82%bf%e3%83%ab%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc/coreserver%e3%81%aephp%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e8%a1%a8%e7%a4%ba%e3%81%99%e3%82%8b/" class="more-link">続きを読む <span class="screen-reader-text">CoreserverのPHPでエラーを表示する</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>デバッグ用途などに使います。</p>
<p>表示したいディレクトリに「.user.ini」を設置します。</p>
<pre>display_errors = On
error_reporting = E_ALL &amp; ~E_NOTICE
</pre>
<p>error_reportingの値は適宜変更して下さい。設置したディレクトリとその下層ディレクトリで有効です。<br />
coreserverのPHPはここ数年で変更がありましたので、過去の対応とは異なることがあります。これからも変化があるかもしれませんので、できれば公式の情報をあたることをオススメします。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/%e3%83%ac%e3%83%b3%e3%82%bf%e3%83%ab%e3%82%b5%e3%83%bc%e3%83%90%e3%83%bc/coreserver%e3%81%aephp%e3%81%a7%e3%82%a8%e3%83%a9%e3%83%bc%e3%82%92%e8%a1%a8%e7%a4%ba%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>(PHP) 多次元配列の比較</title>
		<link>https://tomodigi.com/web/php/php-%e5%a4%9a%e6%ac%a1%e5%85%83%e9%85%8d%e5%88%97%e3%81%ae%e6%af%94%e8%bc%83/</link>
					<comments>https://tomodigi.com/web/php/php-%e5%a4%9a%e6%ac%a1%e5%85%83%e9%85%8d%e5%88%97%e3%81%ae%e6%af%94%e8%bc%83/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Fri, 12 Jun 2015 19:21:08 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2431</guid>

					<description><![CDATA[多次元配列の比較のための関数のメモです。 比較は緩やかな比較(==)をしています。 左辺のキーと値で比較しています。左辺にあるものが右辺にあれば一致するとみなし、右辺にのみあるキーと値は無視します。 左辺にのみ存在する値 &#8230; <a href="https://tomodigi.com/web/php/php-%e5%a4%9a%e6%ac%a1%e5%85%83%e9%85%8d%e5%88%97%e3%81%ae%e6%af%94%e8%bc%83/" class="more-link">続きを読む <span class="screen-reader-text">(PHP) 多次元配列の比較</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>多次元配列の比較のための関数のメモです。</p>
<p>比較は緩やかな比較(==)をしています。</p>
<p>左辺のキーと値で比較しています。左辺にあるものが右辺にあれば一致するとみなし、右辺にのみあるキーと値は無視します。<br />
左辺にのみ存在する値は差分として表示します。<br />
過不足無く配列の一致を確認する場合は、面倒ですが、左右入れ替えて実行します。</p>
<pre>
function diffMultiDemenion($arrrayLeft,$arrayRight){
//左辺の内容が右辺に含まれているか
//同一かどうかは左右入れ替えて確認する

//差が無ければfalse
$diff = false;
if (is_array($arrrayLeft)){
	foreach($arrrayLeft as $key =&gt; $item){
		if (is_array($item)){
			//配列なら再帰呼び出し
			$tempDiff = diffMultiDemenion($item,$arrayRight[$key]);
			if ($tempDiff){
				//差が無ければキーを作らない
				$diff[$key] = $tempDiff;
			}
		}else{
			if($item != $arrayRight[$key]){
				//配列[0]に左辺、[1]に右辺の値
				$diff[$key] = array($item,$arrayRight[$key]);
			}
		}
	}
}elseif($arrrayLeft != $arrayRight){
	//配列でなければそのま比較して異なる場合は右辺と左辺を表示
	$diff = array($arrrayLeft,$arrayRight);
}
return($diff);
}

使用例です。

$arrayA['b'] = 1;
$arrayA['c'] = 2;
$arrayA['a']['d'] = 3;
$arrayA['a']['f'] = 4;

$arrayB['b'] = 1;
$arrayB['c'] = 0;
$arrayB['a']['d'] = 3;
$arrayB['a']['f'] = 0;

$diff = diffMultiDemenion($arrayA,$arrayB);
print_r($diff);

その結果です。

Array
(
[c] =&gt; Array
	(
	[0] =&gt; 2
	[1] =&gt; 0
	)
[a] =&gt; Array
	(
	[f] =&gt; Array
		(
		[0] =&gt; 4
		[1] =&gt; 0
		)
	)
)
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/php/php-%e5%a4%9a%e6%ac%a1%e5%85%83%e9%85%8d%e5%88%97%e3%81%ae%e6%af%94%e8%bc%83/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>(PHP) エラーログの保存先を一時的に変更する</title>
		<link>https://tomodigi.com/web/php-%e3%82%a8%e3%83%a9%e3%83%bc%e3%83%ad%e3%82%b0%e3%81%ae%e4%bf%9d%e5%ad%98%e5%85%88%e3%82%92%e4%b8%80%e6%99%82%e7%9a%84%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/</link>
					<comments>https://tomodigi.com/web/php-%e3%82%a8%e3%83%a9%e3%83%bc%e3%83%ad%e3%82%b0%e3%81%ae%e4%bf%9d%e5%ad%98%e5%85%88%e3%82%92%e4%b8%80%e6%99%82%e7%9a%84%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Thu, 28 May 2015 19:37:00 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[レンタルサーバー]]></category>
		<category><![CDATA[error_log]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2425</guid>

					<description><![CDATA[目的別にPHPのエラーを別の場所に保存したい場合などに使います。 php.iniを編集せずに一時的に変更できます。ただし、syntax errorなどはini_set実行前に評価されるため、通常の場所に保存されます。 / &#8230; <a href="https://tomodigi.com/web/php-%e3%82%a8%e3%83%a9%e3%83%bc%e3%83%ad%e3%82%b0%e3%81%ae%e4%bf%9d%e5%ad%98%e5%85%88%e3%82%92%e4%b8%80%e6%99%82%e7%9a%84%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/" class="more-link">続きを読む <span class="screen-reader-text">(PHP) エラーログの保存先を一時的に変更する</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>目的別にPHPのエラーを別の場所に保存したい場合などに使います。<br />
php.iniを編集せずに一時的に変更できます。ただし、syntax errorなどはini_set実行前に評価されるため、通常の場所に保存されます。</p>
<p>//画面にエラーを表示させない<br />
ini_set(&#8216;display_errors&#8217;, 0);<br />
// ログに記録する<br />
ini_set(&#8216;log_errors&#8217;, &#8216;on&#8217;);<br />
// ログの保存先<br />
ini_set(&#8216;error_log&#8217;, &#8216;/log/php_error.log&#8217;);</p>
<p>通常とは違う場所（ファイル）に分けて保存できます。書き込みができるよう、ディレクトリのパーミッションは適宜変更してください</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/php-%e3%82%a8%e3%83%a9%e3%83%bc%e3%83%ad%e3%82%b0%e3%81%ae%e4%bf%9d%e5%ad%98%e5%85%88%e3%82%92%e4%b8%80%e6%99%82%e7%9a%84%e3%81%ab%e5%a4%89%e6%9b%b4%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>(PHP) 文字列から改行を削除（または置き換え）するときの方法と比較</title>
		<link>https://tomodigi.com/web/php/php-%e6%96%87%e5%ad%97%e5%88%97%e3%81%8b%e3%82%89%e6%94%b9%e8%a1%8c%e3%82%92%e5%89%8a%e9%99%a4%ef%bc%88%e3%81%be%e3%81%9f%e3%81%af%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88%ef%bc%89%e3%81%99%e3%82%8b/</link>
					<comments>https://tomodigi.com/web/php/php-%e6%96%87%e5%ad%97%e5%88%97%e3%81%8b%e3%82%89%e6%94%b9%e8%a1%8c%e3%82%92%e5%89%8a%e9%99%a4%ef%bc%88%e3%81%be%e3%81%9f%e3%81%af%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88%ef%bc%89%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Tue, 03 Feb 2015 19:53:34 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[改行コード]]></category>
		<category><![CDATA[文字コード]]></category>
		<category><![CDATA[置換]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2387</guid>

					<description><![CDATA[文字列から改行を削除します。 ご存じの通り、改行コードはUnix系がLF(\n)のみ、DOS系（Windows系）がCR+LF(\r\n)、Mac系がCR(\r)のみとなっています。 PHPでこれらを置換しよう思った場合 &#8230; <a href="https://tomodigi.com/web/php/php-%e6%96%87%e5%ad%97%e5%88%97%e3%81%8b%e3%82%89%e6%94%b9%e8%a1%8c%e3%82%92%e5%89%8a%e9%99%a4%ef%bc%88%e3%81%be%e3%81%9f%e3%81%af%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88%ef%bc%89%e3%81%99%e3%82%8b/" class="more-link">続きを読む <span class="screen-reader-text">(PHP) 文字列から改行を削除（または置き換え）するときの方法と比較</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>文字列から改行を削除します。</p>
<p>ご存じの通り、改行コードはUnix系がLF(\n)のみ、DOS系（Windows系）がCR+LF(\r\n)、Mac系がCR(\r)のみとなっています。</p>
<p>PHPでこれらを置換しよう思った場合、改行コードがいずれか一つであることが明確なら良いのですが、なかなかそうはいきません。</p>
<p>置換に使う関数はいくつかありますが、str_replaceとmb_ereg_replaceを比較しました。str_replaceは文字列の単純な置換を、mb_ereg_replaceはマルチバイト対応、正規表現で一致する文字列の置換を行います。</p>
<p>改行の消去と置換では微妙にコードに違いが出ますが、今回は半角スペースに置換しました。</p>
<p>比較したコードは以下の通りです。</p>
<p><code>//元の文字列:$original</code></p>
<p><code>//#1 mb_ereg_replace 一つずつ置換</code><br />
<code>$str1 = mb_ereg_replace("\r\n","\n",$original); //CR+LFをLFに</code><br />
<code> $str1 = mb_ereg_replace("\r","\n",$str1); // CRをLFに</code><br />
<code> $str1 = mb_ereg_replace("\n"," ",$str1);//LFを半角スペースに</code></p>
<p><code>//#2 mb_ereg_replace 3通りを置換</code><br />
<code>$str2 = mb_ereg_replace("\r\n|\n|\r"," ",$original); </code></p>
<p><code>//#3 str_replace 一つずつ置換</code><br />
<code> $str3 = str_replace("\r\n","\n",$original); //CR+LFをLFに</code><br />
<code> $str3 = str_replace("\r","\n",$str3); // CRをLFに</code><br />
<code> $str3 = str_replace("\n"," ",$str3);//LFを半角スペースに</code></p>
<p><code>//#4 str_replace 3通りを置換</code><br />
<code>$str4 = str_replace(array("\r\n","\n","\r")," ",$original);</code></p>
<p>同じ文章（約40KB）を1000回ほど置き換え、時間を計測しました。文字列の置換結果はいずれも同じですが、かかった時間はかなり違いました。<br />
<code>#1 : 0.92秒</code><br />
<code>#2 : 0.30秒</code><br />
<code>#3 : 0.11秒</code><br />
<code>#4 : 0.09秒</code></p>
<p>やはりstr_replaceは高速です。正規表現は汎用性も高く便利な機能ですが、時間はどうしてもかかってしまいます。mb_str_replaceのような関数が標準であると便利だと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/php/php-%e6%96%87%e5%ad%97%e5%88%97%e3%81%8b%e3%82%89%e6%94%b9%e8%a1%8c%e3%82%92%e5%89%8a%e9%99%a4%ef%bc%88%e3%81%be%e3%81%9f%e3%81%af%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88%ef%bc%89%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JoomlaはPHPをevalでなく直接実行できる</title>
		<link>https://tomodigi.com/web/php/joomla%e3%81%afphp%e3%82%92eval%e3%81%a7%e3%81%aa%e3%81%8f%e7%9b%b4%e6%8e%a5%e5%ae%9f%e8%a1%8c%e3%81%a7%e3%81%8d%e3%82%8b/</link>
					<comments>https://tomodigi.com/web/php/joomla%e3%81%afphp%e3%82%92eval%e3%81%a7%e3%81%aa%e3%81%8f%e7%9b%b4%e6%8e%a5%e5%ae%9f%e8%a1%8c%e3%81%a7%e3%81%8d%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Mon, 12 Jan 2015 19:35:27 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Joomla!]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2380</guid>

					<description><![CDATA[CMSのJoomla!を使う機会があったので紹介です。 WordPressなどでは、、投稿や記事の中でPHPを実行するプラグインや拡張機能では通常evalコマンドでPHPが実行されます。 そんななか、JoomlaのJum &#8230; <a href="https://tomodigi.com/web/php/joomla%e3%81%afphp%e3%82%92eval%e3%81%a7%e3%81%aa%e3%81%8f%e7%9b%b4%e6%8e%a5%e5%ae%9f%e8%a1%8c%e3%81%a7%e3%81%8d%e3%82%8b/" class="more-link">続きを読む <span class="screen-reader-text">JoomlaはPHPをevalでなく直接実行できる</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>CMSの<a title="Joomla! The CMS Trusted By Millions for their Websites" href="http://www.joomla.org/" target="_blank">Joomla!</a>を使う機会があったので紹介です。</p>
<p>WordPressなどでは、、投稿や記事の中でPHPを実行するプラグインや拡張機能では通常evalコマンドでPHPが実行されます。</p>
<p>そんななか、Joomlaの<a title="Jumi - Joomla! Extension Directory" href="http://extensions.joomla.org/extension/jumi" target="_blank">Jumi</a>というエクステンションではPHPはまさにその記事のその部分でPHPが記述されるようで、Joomlaで使用されているセッションや変数をそのまま使用することができます。当然危険性も増えますが、便利な点も多くあります。</p>
<p>ちなみにevalはPHPのマニュアルで次のように警告されています。</p>
<blockquote><p>eval() は非常に危険な言語構造です。 というのも、任意の PHP コードを実行できてしまうからです。 これを使うことはおすすめしません。</p></blockquote>
<p>記事の編集の権限が不特定な場合は、このような機能は無効にすべきだと思いますので、くれぐれもご注意下さい。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/php/joomla%e3%81%afphp%e3%82%92eval%e3%81%a7%e3%81%aa%e3%81%8f%e7%9b%b4%e6%8e%a5%e5%ae%9f%e8%a1%8c%e3%81%a7%e3%81%8d%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>(PHP) TCPDFで外部フォントの指定（addTTFfontの修正）</title>
		<link>https://tomodigi.com/web/php/php-tcpdf%e3%81%a7%e5%a4%96%e9%83%a8%e3%83%95%e3%82%a9%e3%83%b3%e3%83%88%e3%81%ae%e6%8c%87%e5%ae%9a%ef%bc%88addttffont%e3%81%ae%e4%bf%ae%e6%ad%a3%ef%bc%89/</link>
					<comments>https://tomodigi.com/web/php/php-tcpdf%e3%81%a7%e5%a4%96%e9%83%a8%e3%83%95%e3%82%a9%e3%83%b3%e3%83%88%e3%81%ae%e6%8c%87%e5%ae%9a%ef%bc%88addttffont%e3%81%ae%e4%bf%ae%e6%ad%a3%ef%bc%89/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Sun, 28 Dec 2014 19:56:30 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[TCPDF]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=2370</guid>

					<description><![CDATA[PHPでPDFを動的に生成するライブラリ「TCPDF」のメモです。 標準で用意されているフォント以外を使う方法はWebで検索すると多数紹介されていますが、TCPDFの最新版（今回は6.2.3）でエラーが出てしまったので修 &#8230; <a href="https://tomodigi.com/web/php/php-tcpdf%e3%81%a7%e5%a4%96%e9%83%a8%e3%83%95%e3%82%a9%e3%83%b3%e3%83%88%e3%81%ae%e6%8c%87%e5%ae%9a%ef%bc%88addttffont%e3%81%ae%e4%bf%ae%e6%ad%a3%ef%bc%89/" class="more-link">続きを読む <span class="screen-reader-text">(PHP) TCPDFで外部フォントの指定（addTTFfontの修正）</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>PHPでPDFを動的に生成するライブラリ「TCPDF」のメモです。</p>
<p>標準で用意されているフォント以外を使う方法はWebで検索すると多数紹介されていますが、TCPDFの最新版（今回は6.2.3）でエラーが出てしまったので修正点を紹介します。</p>
<p>ライブラリのインストール方法等は割愛します。</p>
<p>以前の方法はTCPDFクラスからaddTTFfontを設定していましたが、新しいバージョンでは TCPDF_FONTS からaddTTFfontを呼ぶ必要があります。そのま実行するとCall to undefined method TCPDF::addTTFfont()とエラーが出てしまいます。</p>
<p>以前の方法<br />
<code>$pdf = new TCPDF("L", "mm", "A4", true, "UTF-8" );<br />
$font = $pdf-&gt;addTTFfont('フォント名.ttf');<br />
$pdf-&gt;SetFont($font , '', 32,'',true);<br />
$pdf-&gt;Text(0, 0, "PDFに表示する文字" );<br />
</code></p>
<p>新しい設方方法<br />
<code>$pdf = new TCPDF("L", "mm", "A4", true, "UTF-8" );<br />
$font = new TCPDF_FONTS();<br />
$fontX = $font-&gt;addTTFfont('フォント名.ttf');<br />
$pdf-&gt;SetFont($fontX , '', 32,'',true);<br />
$pdf-&gt;Text(0, 0, "PDFに表示する文字" );<br />
</code></p>
<p>フォントを複数使う場合もフォントごとに新しいインスタンスを作ります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/php/php-tcpdf%e3%81%a7%e5%a4%96%e9%83%a8%e3%83%95%e3%82%a9%e3%83%b3%e3%83%88%e3%81%ae%e6%8c%87%e5%ae%9a%ef%bc%88addttffont%e3%81%ae%e4%bf%ae%e6%ad%a3%ef%bc%89/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>(PHP)mb_strwidthとmb_strimwidth</title>
		<link>https://tomodigi.com/web/phpmb_strwidth%e3%81%a8mb_strimwidth/</link>
					<comments>https://tomodigi.com/web/phpmb_strwidth%e3%81%a8mb_strimwidth/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Sat, 06 Dec 2014 19:49:40 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WEB]]></category>
		<category><![CDATA[マルチバイト文字]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=1982</guid>

					<description><![CDATA[PHPで全角半角混じった文字のバイト数（≒幅）の処理のための関数のメモです。 shift-jisなら全角は2バイトと決め打ちしても良さそうですが、主流のUTF-8では全角は3バイト（一部2バイト）で、見た目とバイト数は一 &#8230; <a href="https://tomodigi.com/web/phpmb_strwidth%e3%81%a8mb_strimwidth/" class="more-link">続きを読む <span class="screen-reader-text">(PHP)mb_strwidthとmb_strimwidth</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>PHPで全角半角混じった文字のバイト数（≒幅）の処理のための関数のメモです。</p>
<p><span class="methodname">shift-jisなら全角は2バイトと決め打ちしても良さそうですが、主流のUTF-8では全角は3バイト（一部2バイト）で、見た目とバイト数は一致しません。</span></p>
<p><span class="refname">mb_strwidth</span>は全角文字（マルチバイト文字）は2、いわゆる半角英数は1で&#8221;文字列の幅&#8221;を返します。また、<span class="methodname">mb_strimwidth</span>は同様に文字列の幅で切り取りを行います。第4引数に「・・・」などとすると、切り取った文字列のあとに「・・・」を足してくれます。（それくらいはPHPでもすぐにできるので、無くてもこまらない機能ですが。）</p>
<p>長さに関係なくレイアウトを維持したい場合などに有用でWeb向きの関数です。<span class="refname">mb_strwidth</span>で文字列の長さを確認して、<span class="methodname">mb_strimwidth</span>で切り取るという感じで使うことが予想されます。ちなみにsubstrのように、後ろから何文字切り抜くというような使い方はできません。そのときはmb_substrを使うべきだと思います。</p>
<p>なお、エンコードの指定は確実に行いましょう。</p>
<p><span class="refname"><span class="methodname">リファレンス「</span><a title="PHP: mb_strwidth - Manual " href="http://php.net/manual/ja/function.mb-strwidth.php" target="_blank">mb_strwidth</a></span>」<br />
<span class="methodname">リファレンス「<a title="PHP: mb_strimwidth - Manual " href="http://php.net/manual/ja/function.mb-strimwidth.php" target="_blank">mb_strimwidth</a></span>」</p>
<p><span class="refname"><span class="methodname"> </span></span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/phpmb_strwidth%e3%81%a8mb_strimwidth/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
