<?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>文字コード &#8211; トモデジ  tomodigi.com</title>
	<atom:link href="https://tomodigi.com/tag/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89/feed/" rel="self" type="application/rss+xml" />
	<link>https://tomodigi.com</link>
	<description>デジタルもアナログも</description>
	<lastBuildDate>Tue, 03 Feb 2015 04:54:58 +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>(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>CORESERVERで消えないファイルがある (レンタルサーバー)</title>
		<link>https://tomodigi.com/web/coreserver%e3%81%a7%e6%b6%88%e3%81%88%e3%81%aa%e3%81%84%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%8c%e3%81%82%e3%82%8b/</link>
					<comments>https://tomodigi.com/web/coreserver%e3%81%a7%e6%b6%88%e3%81%88%e3%81%aa%e3%81%84%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%8c%e3%81%82%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Tomo]]></dc:creator>
		<pubDate>Sun, 25 Sep 2011 06:13:12 +0000</pubDate>
				<category><![CDATA[WEB]]></category>
		<category><![CDATA[レンタルサーバー]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[CORESERVER]]></category>
		<category><![CDATA[エラー表示]]></category>
		<category><![CDATA[文字コード]]></category>
		<guid isPermaLink="false">http://www.tomodigi.com/?p=88</guid>

					<description><![CDATA[文字コードの関係か、 ファイル名 の一部に日本語（2バイト文字）を使ったファイルが消せなくなりました。リネームもできない状態でした。net2ftpでも文字化けした状態で、文字コードを強制的にShift-JISにすると、フ &#8230; <a href="https://tomodigi.com/web/coreserver%e3%81%a7%e6%b6%88%e3%81%88%e3%81%aa%e3%81%84%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%8c%e3%81%82%e3%82%8b/" class="more-link">続きを読む <span class="screen-reader-text">CORESERVERで消えないファイルがある (レンタルサーバー)</span> <span class="meta-nav">&#8594;</span></a>]]></description>
										<content:encoded><![CDATA[<p>文字コードの関係か、 ファイル名 の一部に日本語（2バイト文字）を使ったファイルが消せなくなりました。リネームもできない状態でした。net2ftpでも文字化けした状態で、文字コードを強制的にShift-JISにすると、ファイル名は表示されましたが、削除はできませんでした。（ファイル名以外のメニュー等は当然文字化けします。）</p>
<p>解決方法としてはCGIを作ってワイルドカードで削除することができるということでしたので、それにならって削除することにしました。</p>
<p>CGIは以下の通りです。<a title="ファイルやフォルダが削除できない場合（xrea）" href="http://www.mudaijp.com/wp/260.html">こちら</a>の記事や<a title="フォルダが削除できません" href="http://sb.xrea.com/showthread.php?t=437">こちら</a>の掲示板を参考にしました。属性は755とし、/public_htmlに設置しました。<br />
</p>
<pre>#!/usr/bin/perl

system("rm -rf /virtual/IDIDID/public_html/DDDDDD/FFFFFF");
print "Content-Type: text/html\n\n";
print "OK!!";
exit;</pre>
<p>IDIDIDはアカウント名、DDDDDDはディレクトリ名、FFFFFFはファイル名です。例えば○○.jpgというファイルをすべて削除するル場合はFFFFFFは*.jpgになります。</p>
<p>とここまでは良かったのですが、実行するとエラーが表示されます。</p>
<pre>Script Error

The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file.</pre>
<p>なにかのエラーが出ているようですが、内容はわかりません。<a title="[perlメモ]XREA系サーバでperlのCGIを動かす時の注意点" href="http://blog.kumacchi.com/2009/12/perlxreaperlcgi.html">こちら</a>のサイトを参考に、.htaccessに以下を追加してエラーの内容を表示するようにしました。</p>
<pre>&lt;Files del.cgi&gt;
AddHandler cgi-script-debug .cgi
&lt;/Files&gt;</pre>
<p>1行目のdel.cgiは今回作成した削除用のスクリプト名です。<br />
これで、cgiを実行して、エラーがあれば画面下の方に表示されます。</p>
<pre>Output of script follows:
=====================================================
Content-Type: text/html

OK!!</pre>
<p>エラーがなければ一番下にこのような表示がでます。</p>
<p>今回はコピー＆ペーストしたスクリプトに全角スペースがあったことが原因でした。<br />
訂正して実行した結果、文字化けしたファイルは無事に削除されました。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://tomodigi.com/web/coreserver%e3%81%a7%e6%b6%88%e3%81%88%e3%81%aa%e3%81%84%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%8c%e3%81%82%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
