内容に日本語を含む入力をした場合、$contentに内容を取得してくれません。
例えば、「xをyに変換」ならうまくいくのですが、「あ を ★に変換」だと失敗します。
結構調べたのですが、手詰まりのようです。申し訳ないのですが、原因を教えて下さい。
よろしくお願いします。
<?php
//=================================
//●: ユーザ定義関数を使う
//=================================
//----------------------------
//外部ファイルの取り込み
//----------------------------
require_once("./5-2-2.php"); //ユーザ定義関数ファイル
//----------------------------
//初期値設定
//----------------------------
$kubun = "1";
$content="";
$from="";
$to="";
$postflg="0";
//----------------------------
//POSTされたとき
//----------------------------
if($_SERVER["REQUEST_METHOD"]=="POST"){
$postflg="1";
//----------------------------
//関数テストするボタンを押す
//----------------------------
if(isset($_POST["submit"])){
//↑「関数テストする」ボタンがクリックされた時、この処理を行う
//----------------------------
//$_POSTから値を取得
//----------------------------
if(isset($_POST["kubun"])){ //区分
$kubun=$_POST["kubun"];
}
$content= htmlspecialchars($_POST["content"],ENT_QUOTES);//内容
$from= htmlspecialchars($_POST["from"],ENT_QUOTES);//変換前
$to=htmlspecialchars($_POST["to"],ENT_QUOTES);//変換後
//----------------------------
//関数を呼び出す
//----------------------------
$func ="check_" .$kubun;
$cont =$content;
$value =$func($cont);
}
}
?>
<html>
<head>
<meta http-equiv="Content-type"
content ="text/html; charset=Shift-JIS">
<title>●:ユーザ定義関数を使う</title>
</head>
<body>
<h2>ユーザ定義関数テスト</h2>
<?php
//----------------------------
//送信された内容を表示
//----------------------------
if($postflg=="1"){
echo "<b>関数処理された内容</b><br>";
echo "<font color=\"#b2ce77\">";
echo $msg;
echo "</font>";
echo "$cont<br>";
echo "内容の長さは<b>" .$value ."</b>バイトです<br>";
}
?>
<hr>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST" enctype="multipart/form-data">
<table border="1" width="600" cellspecing="0" cellpadding="0">
<?php
//----------------------------
//処理区分
//----------------------------
?>
<tr>
<td align"center" width="150" bgcolor="#b2ce77">処理区分</td>
<td align"left" width="450">
<input type="radio" name="kubun"value="1"<?if($kubun=="1"){echo "checked";}?>>URLをリンクに変換<br>
<input type="radio" name="kubun"value="2"<?if($kubun=="2"){echo "checked";}?>>入力内容に合わせて改行する<br>
<input type="radio" name="kubun"value="3"<?if($kubun=="3"){echo "checked";}?>>
<input type="text" name="from" value="<?=$from?>">を<input type="text" name="to" value="<?=$to?>">に変換<br>
<input type="radio" name="kubun" value="4"<?if ($kubun=="4"){echo "checked";}?>>上記のすべてを行う<br>
</td>
</tr>
<?php
//----------------------------
//内容
//----------------------------
?>
<tr>
<td align"center" width="150" bgcolor="#b2ce77">内容</td>
<td align"left" width="450">
<textarea name="content"cols="60"rows="10"><?=$content?></textarea>
</td>
</tr>
</table>
<br>
<input type="submit"name="submit"value=" 関数テストする ">
</form>
</body>
</html>
<?php
//=================================
//●: ユーザ定義関数を使う(関数)
//=================================
//----------------------------
//URLをリンクに変換
//----------------------------
function check_1(&$str){
//URLをリンクタブに変更
$check="{(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*\/:@&_-]+)}";
$str = preg_replace($check,"<a href=\"$1$2\" target=\"_blank\">$1$2</a>",$str);
//メールアドレスをリンクタグに変更
$check= "/([a-zA-Z0-9_\.-]+\@)([a-zA-Z0-9_\.-]+)([a-zA-Z]+)/";
$str= preg_replace($check,"<a href=\"mailto:$1$2$3\">$1$2$3</a>",$str);
global $msg;
$msg="URlをリンクに変換しました!<br>";
return strlen($str);
}
//----------------------------
//入力内容に合わせて改行する
//----------------------------
function check_2(&$str,$nagasa=0){
$str = nl2br($str);
global $msg;
$msg="入力内容に合わせて改行しました!<br>";
return strlen($str);
}
//----------------------------
//文字列を置換しました
//----------------------------
function check_3(&$str){
$str = str_replace($GLOBALS["from"],$GLOBALS["to"],$str);
global $msg;
$msg= $GLOBALS["from"] ."から" .$GLOBALS["to"] ."置換しました!<br>";
return strlen($str);
}
//----------------------------
//すべての関数を実行
//----------------------------
function check_4(&$str){
check_1($str);
check_2($str);
check_3($str);
global $msg;
$msg= "すべての関数チェックを行いました♪<br>";
return strlen($str);
}
?>