こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PHPでエラーがでてしまって困っています。

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /Applications/MAMP/htdocs/5-2-1.php on line 30

このエラーを解消できません。
下記は実践マスターPHP+MYSQLという書籍のなかのサンプルなんですが、どこが間違っているかどなたか教えていただけないでしょうか?
エラーを検索するとダブルクォーテーションの使い方が原因と書いてあるんですが、最近PHPを勉強したばかりでどうやっても解決できません。

function check_3(&$str){
$str =str_replace($GLOBALS["from"],$GLOBALS["to"],$str);  ←この行でエラー
global $msg;
$msg = $GLOBALS["from"].'から'.$GLOBALS["to"].'へ置換しました!<br>';

return strlen($str);
}

宜しくお願いします。

投稿日時 - 2011-08-13 02:35:46

QNo.6939612

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

エラーはその行数で起きているとは限らないので、
全ソースをそのまま記載して下さい。

投稿日時 - 2011-08-13 02:48:00

補足

<?php
//◎ :5-2ユーザー定義関数を使う(関数)
//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;
$masg = '入力内容にあわせて改行しました!<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);
}
?>

<?php
//◎:5-2 ユーザー定義関数を使う
//■△●外部ファイルの取り込み
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 =UTF-8">

<title>●:5-2 ユーザー定義関数を使う</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" cellspacing = "0" cellpading = "0">
<?php

//処理区分

?>
<tr>
<td align = "center" width = "150" bicolor = "#b2ce77">処理区分</td>
<td align = "left" width = "450">
&nbsp;<input type = "radio" name = "kubun" value= "1"<?if ($kubun=="1"){echo "checked";}?>>URLをリンクに変換<br>
&nbsp;<input type = "radio" name = "kubun" value= "2"<?if ($kubun=="2"){echo "checked";}?>>入力内容に合わせて改行する<br>
&nbsp;<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>
&nbsp;<inputtype = "radio" name = "kubun" value="4"<if($kubun=="4"){echo "checked";}?>>上記のすべてを行う<br>


</td>
</tr>
<?php

//内容

?>
<tr>
<td align = "center" width = "150" bicolor = "b2ce77">内容</td>
<td align = "left" width = "450">
&nbsp;<textarea name = "content" cols="60" rows="10"><?=$content?></textarea>
</td>
</tr>

</table>
<br>

<input rype = "submit" name = "submit" value = " 関数テストをする ">
</form>
</body>
</heml>

投稿日時 - 2011-08-13 03:15:28

お礼

自分で入力間違いなどをすべて確認していって、なんとかエラーはなくなり表示できました。ありがとうございました。
やったことは、ファイルを二つにわけて、入力誤りがないか、しらべていきました。

投稿日時 - 2011-08-13 04:30:48

あなたにオススメの質問