SQLの窓 イラストAC フリー素材

2007年02月17日

PHPの致命的なエラー処理




posted by at 2007-02-17 13:53 | PHP | このブログの読者になる | 更新情報をチェックする

2006年12月23日

WEB上でPHPの正規表現による文字列取得

ここから実行
※ テキストエリアに改行無しでURLを記述すると、そこから文字列を取得

<?
require_once( "./mwin.php" );

mb_language( "ja" );
mb_internal_encoding("EUC-JP");

foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\\\", "\\", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}
$_GET = $_POST;
?>

<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=euc-jp">
<TITLE>PHP 雛形</TITLE>
<LINK rel="stylesheet" type="text/css" href="style.css">
<STYLE type="text/css">
</STYLE>
</HEAD>
<BODY id="body" style='background-color:white'>

<?

if ( trim( $_GET['text'] ) == '' ) {
	print "対象データを入力して下さい";
	exit();
}
if ( trim( $_GET['pattern'] ) == '' ) {
	print "パターンを入力して下さい";
	exit();
}

if ( substr( $_GET['text'], 0, 4 ) == 'http' ) {
	$ret = @file_get_contents( $_GET['text'] );
	if ( $ret !== FALSE ) {
		$enc = mb_detect_encoding($ret, "SJIS,UTF-8,EUC-JP");
		if ( $enc == 'SJIS' || $enc == 'UTF-8' ) {
			$ret = mb_convert_encoding ( $ret, "EUC-JP", $enc );
		}
		$_GET['text'] = $ret;
	}
}

mb_ereg_search_init( $_GET['text'], $_GET['pattern'], "i" );
while( TRUE === mb_ereg_search() ) {
	$work = mb_ereg_search_getregs();
	$ncnt = 0;
	foreach( $work as $Key => $Value ) {
		$Value = mb_ereg_replace( "&", "&amp;", $Value );
		$Value = mb_ereg_replace( "<", "&lt;", $Value );
		$matches[$ncnt][] = mb_ereg_replace( ">", "&gt;", $Value );
		$ncnt++;
	}
}

print "<pre>";
print "<span style='color:blue'>[0] は、マッチした全体の文字列を指す</span>\n";
print "<span style='color:blue'>それ以外は () によってマッチした部分文字列</span>\n";
print_r($matches);
print "</pre>";

?>

</BODY>
</HTML>
posted by at 2006-12-23 19:46 | PHP | このブログの読者になる | 更新情報をチェックする

2006年12月22日

XMLファイルの書き換え(PHP5:DOMFunctions)

より、オブジェクト処理として完成されてますね

<?

mb_language( "ja" );
mb_internal_encoding("UTF-8");

# DOM Object 作成
$dom = DOMDocument::load("index.xml");

# 既存のノード( channel ) を取得
$nodeList = $dom->getElementsByTagName("channel");

# 新規ノードを作成( createElement でも良い )
$node = $dom->createElement("item");

# **********************************************************
# title ノードを作成
# **********************************************************
$nodeChild = $dom->createElement("title");
# テキストノードを作成して title ノードに追加
$utf8 = mb_convert_encoding ( "これは", "UTF-8", "SJIS" );
$nodeChild->appendChild( $dom->createTextNode( $utf8 ) );
# item ノードに titile ノードを追加
$node->appendChild( $nodeChild );

# **********************************************************
# link ノードを作成
# テキストノード同時作成の createElement を使用
# **********************************************************
$utf8 = mb_convert_encoding ( "UTF-8 ですが", "UTF-8", "SJIS" );
# テキストノード同時作成する link ノードの作成
$nodeChild = $dom->createElement("link", $utf8 );
$node->appendChild( $nodeChild );

# **********************************************************
# description ノードを作成
# **********************************************************
$utf8 = mb_convert_encoding ( "SHIFT_JISを", "UTF-8", "SJIS" );
$nodeChild = $dom->createElement("description", $utf8 );
$node->appendChild( $nodeChild );

# **********************************************************
# dc:subject ノードを作成
# **********************************************************
$utf8 = mb_convert_encoding ( "自力で", "UTF-8", "SJIS" );
$nodeChild = $dom->createElement("dc:subject", $utf8 );
$node->appendChild( $nodeChild );

# **********************************************************
# dc:date ノードを作成
# **********************************************************
$utf8 = mb_convert_encoding ( "変換しています", "UTF-8", "SJIS" );
$nodeChild = $dom->createElement("dc:date", $utf8 );
$node->appendChild( $nodeChild );


# channel ノードは、一つしか無いので、nodeList(0) で参照
# channel ノードの下に item ノードを追加
$targetNode = $nodeList->item( 0 );
$targetNode->appendChild( $node );

# 保存
$dom->save( "data.xml" );

#<channel>
#	<item>
#		<title>aaaaa</title> 
# 		<link>bbbbb</link> 
# 		<description>ccccc</description> 
#		<dc:subject>ddddd</dc:subject> 
#		<dc:date>eeeee</dc:date> 
#	</item>
#		<---- ここに追加
#</channel>

?>
Done



posted by at 2006-12-22 14:27 | PHP | このブログの読者になる | 更新情報をチェックする

2006年12月02日

リコンパイルPHPマニュアル

現在は文字化けしなくなっています。

PHP の chm マニュアルが文字化けしなくなっています(現在2014/4/11ビルド)が、トップページは出ません
▼▼▼▼ 古い記事です ↓リコンパイルしたもの オリジナル chm ↓は、日本語が化けてるので http://www.php.net/download-docs.php 自分でしたい場合は、オリジナルをまず、ダウンロード後、cmd.exe からダウンロードファイルをカレントにしてhh -decompile . php_manual_ja.chm を実行して下さい( php_manual_ja.hhc と php_manual_ja.hhk が作成されます ) Microsoft HTML Help Downloadsより、HTML Help Workshop をダウンロードしてインストール( Htmlhelp.exe で、コンパイラと英文マニュアル、Htmlhelpj.exe で日本語マニュアルのみ ) php_manual_ja.hhc と php_manual_ja.hhk より php.hhp ( プロジェクト )を作成し、いろいろオプションを付けてコンパイル。 とりあえず、php.hhp をリネームして内容を変更してオリジナルの chm を作ってみると良いでしょう。 ( プロジェクトバーの FD アイコンで保存して、ファイルメニューから Compile )
posted by at 2006-12-02 22:42 | PHP | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します