はじめてプログラムに挑戦している者です。
独習PHPという本で、値がダブルクォーテーションで囲まれているか
シングルクォーテーションで囲まれているかで、結果が違うという内容なのですが
サンプル通りに入力して、ブラウザで表示すると

サンプル

<?php
$title='サーバサイド技術の学び舎 - WINGS';
$data1="「$title」はサーバサイド技術の最新情報をお届けします。<br />";
$data2='「$title」はサーバサイド技術の最新情報をお届けします。<br />';
print($data1);
print($data2);
?>

↓次のようなエラーが出てしまいます。
Parse error: parse error, expecting `']'' in C:\Apache Software
Foundation\Apache2.2\htdocs\samples\chap2\variable2.php on line 3

どうすれば正しく表示されるようになりますでしょうか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

PHPの文字列に関することですね。



http://www.php.net/manual/ja/language.types.stri …

一度、上記URLの引用符と二重引用符の項目を参照してみて下さい。
    • good
    • 0

ダブルクォーテーションで括られた文字列内に$から始まる文字列が存在する場合、その$から始まる文字列は変数として扱われることになります。


しかしながらkotatu0031さんが示しているプログラムの場合、PHPは【$title」はサーバサイド技術の最新情報をお届けします。<br />】を変数名と判断してしまいます。

これを回避する
(1) 変数名の後ろに半角スペースを入れる。
(2) 変数名を波括弧で括る。
(3) そもそも変数をダブルクォーテーションやシングルクォーテーション内に記述しない。
といった方法があります。

(1)の場合
$data1="「$title 」はサーバサイド技術の最新情報をお届けします。<br />";

(2)の場合
$data1="「{$title}」はサーバサイド技術の最新情報をお届けします。<br />";

(3)の場合
$data1="「" . $title . "」はサーバサイド技術の最新情報をお届けします。<br />";
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qmultiple definitionというエラー

現在Ubuntu LinuxのgccでC言語のプログラムをやっています。

https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2452/trunk/20140411/code.h

このツリーのcode.hに ”const sig_code2_t PVC_TCP_SIG_CODE[100] = {” というコードを追加してmakeを行うと次のようなエラーが出て実行ファイルが出力されません。



(エラー内容)

---------------(中略)-----------------
gcc -o exe main.o event.o env.o audio.o task.o comm.o menu_show_status.o mount.o net.o misc.o -lpthread
event.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
env.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
audio.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
task.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
comm.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
mount.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
net.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
misc.o:(.rodata+0x0): multiple definition of `PVC_TCP_SIG_CODE'
main.o:(.rodata+0x0): first defined here
collect2: error: ld returned 1 exit status
make: *** [exe] Error 1






この const sig_code2_t PVC_TCP_SIG_CODE[100] = {をコメントアウト正常にビルドできるのですが、




この問題を解決するにはどうすれば良いのかご教示頂きますようお願い致します。

現在Ubuntu LinuxのgccでC言語のプログラムをやっています。

https://sourceforge.jp/projects/cc1101driver/scm/svn/blobs/2452/trunk/20140411/code.h

このツリーのcode.hに ”const sig_code2_t PVC_TCP_SIG_CODE[100] = {” というコードを追加してmakeを行うと次のようなエラーが出て実行ファイルが出力されません。



(エラー内容)

---------------(中略)-----------------
gcc -o exe main.o event.o env.o audio.o task.o comm.o menu_show_status.o mount.o net.o misc.o -lpthread
event.o:(.rodat...続きを読む

Aベストアンサー

お約束の「ヘッダに実体を定義してはいけない」ってヤツです。

code.hに記述した内容はall_includes.hに適用されます。
all_includes.h内で#include "code.h"していますからね。

で、all_includes.hの内容はそれぞれ
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
つまり、code.hに記述した内容も
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。

リンクする段階でどのオブジェクトファイルのPVC_TCP_SIG_CODE[100]を使用したらいいのでしょうか?????
というエラーです。

extern宣言して、実体をどこかのソースファイルのみに記述する。
というのが一般的な対処方法です。
# static宣言にすればとりあえずリンクは通るかもしれませんが…無駄が出ますねぇ。
# 今回はconstなので、メモリに無駄が出るだけ…で済むかと思われますが。
http://d.hatena.ne.jp/saitodevel01/20110321/1300685958

お約束の「ヘッダに実体を定義してはいけない」ってヤツです。

code.hに記述した内容はall_includes.hに適用されます。
all_includes.h内で#include "code.h"していますからね。

で、all_includes.hの内容はそれぞれ
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
つまり、code.hに記述した内容も
audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。
それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。...続きを読む

Q$str=preg_replace('/\u3000/','  ',$str);

によってutf-8の空白文字をhtmlの空白文字に変換しようとしたのですがエラーになります
どうしたらいいのでしょうか?

Aベストアンサー

>そもそも?のところにコード表現で空白文字を入力する手段はないのでしょうか?
\xE3\x80\x80
で一応いいかと思いますが…

Qbear the definitions

bear the definitions
という場合、このbearはどういう訳となるのでしょうか?


Bold and capitalized terms not defined herein bear the definitions in the Competition Packet.
という文で使われていました。

「ここで定義していない太字と大文字表記は、Competition Packetに定義されている」という意味でしょうか?

Aベストアンサー

yes

Qpreg_match( '/^(\D+)(\d*)$/' , $変数 , $regs )

if( ! preg_match( '/^(\D+)(\d*)$/' , $変数1 , $regs ) )
{echo ( 'invalid dirname: ' . htmlspecialchars( $変数1 ) );}
$変数2 = $regs[2] === '' ? '' : intval( $regs[2] ) ;

正規表現だと思うのですが、どういう意味か教えてください。

□分からないなりに考えてみました…
▽1行目
$変数の内容が、'/^(\D+)(\d*)$/'にマッチしなければ、$regs へ代入。
▽2行目
マッチしていた場合は、htmlspecialchars関数を実行した後、'invalid dirname: '+その結果を表示する。
▽3行目
$regs配列変数の1番目を、何かして、$変数2 へ代入する。

……誰か教えてください…。

Aベストアンサー

>どこら辺に問題ありそうでしょうか?

まずpreg_matchで$regsを生成していますが、マッチしないケース
すなわち「数字からはじまる文字列」の場合、$regsが未設定になります。
したがって$regs[2] === ''で評価すると$regsが未設定エラーになります。
またエラーレベルを下げた場合でも、$regs[2] === ''はfalseなので
数字ではない文字列をintvalで評価するため$変数2には0が代入されます。

やはりif分岐である程度場合分けをしっかりしてやらないといけないでしょう。
総じて$変数1に代入される文字列の想定を広げて、チェックしてやる必要があります。

また、仮にデータがきちんと通ったとして、$変数2は空文字か数字という
データ型が確定しないフローになっています
たしかにPHPは変数定義がいい加減ではありますが、あまりなんでも
かんでも入れればいいというものではありませんので、ある程度
変数の型が一律になるような工夫が必要だとおもいます。

Qウィンドウズのアップデートで10月20日に、Definition Up

ウィンドウズのアップデートで10月20日に、Definition Update for wWindows Defender-KB015597(Definition 1.93.26.0)が2回インストールされましたが、そのあとにもう一つ「更新プログラムをインストールしています(50パーセント完了)」とありますが、今日で3日連続表示され、インストールが進みません。なにか解決方法はないでしょうか?PCは初心者クラスです。よろしくお願いします。

Aベストアンサー

>今日で3日連続表示され、インストールが進みません。
ちょっと状況がつかめません。
毎日の起動時に同じ内容が表示されることが3回続いた、ということでしょうか。それとも、72時間の間ずっと「(50パーセント完了)」の状態なのでしょうか。

前者なら
http://menushowdelay.blog13.fc2.com/blog-entry-523.html
とその中のリンクを。
後者なら、とりあえず再起動しましょう。

Qprint "{$data[$i][$j]}";の $dataと「直接関係」がある

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都のデータを格納します。
$data[3][2] = 19;
$data[4][0] = "福岡";
$data[4][1] = 27;//$data[4][●]に福岡のデータを格納します。
$data[4][2] = 22;

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>都市名</th>
<th>最高気温</th>
<th>最低気温</th>
</tr>

<?php

for($i=0; $i<count($data); $i++){
print "<tr>";
for($j=0; $j<count($data[0]); $j++){
print "<td>{$data[$i][$j]}</td>";//配列の要素を出力する。
}
print "</tr>\n";
}

?>

</table>

</body>
</html>
以上ですが・・・だんだん難しくなってきました!
 さて
  print "<td>{$data[$i][$j]}</td>";の $dataと「直接関係」があるところは
 1) for($j=0; $j<count($data[0]); $j++){  
 2)$data[0][0] = "東京";~$data[4][2] = 22;
  の1)2)のどちらと「直接関係」があるのでしょうか?
 以上よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都の...続きを読む

Aベストアンサー

> の1)2)のどちらと「直接関係」があるのでしょうか?

No.1さんと同じく質問の意味が理解できません。
わかり易く補足いただいた方が良いかと思います。



”の1)2)のどちらと「関係」があるのでしょうか?” というご質問であれば

”どちらとも関係あります” という回答になります。

QOn Error GoTo でエラーが発生する

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

   Do
   On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
   On Error GoTo 0
   Loop

ErrorTrap2:

End Sub

しかし、以下のようにSubで二つに分けるとエラーは出ません。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

Call Macro2

End Sub
Sub Macro2()

    Do
     On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
    On Error GoTo 0
    Loop

  ErrorTrap2:

End Sub

「On Error GoTo 0」がうまく解除できていないのかと思い、いろいろ試してみました。
しかし、どういった理由かはわかりませんでした。
「On Error GoTo」は、Subでは、ひとつしか使えないのでしょうか。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

   Do
   On Error GoTo ErrorTrap2
      '-エラーの発生するコード 2
   On Error GoTo 0
   Loop

ErrorTrap2:

End Sub

しかし、以下のようにSubで二つに分けるとエラーは出ません。

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1

ErrorTrap1:

On Error GoTo 0

Call Macro2

End Sub
Sub Macro2()

    Do
     On Error G...続きを読む

Aベストアンサー

エラー処理の中でOn Error GoToを記述することはできません。


エラー処理の基本的な構造は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Exit Sub

ErrorTrap1:
  'エラー処理
  Resume Next

End Sub


エラー処理が2つある場合は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Do
  On Error GoTo ErrorTrap2
    '-エラーの発生するコード 2
  On Error GoTo 0
Loop

Exit Sub

ErrorTrap1:
  'エラー処理1
  Resume Next

ErrorTrap2:
  'エラー処理2
  Resume Next

End Sub


Resume Next でエラーが発生した行の次の行から再開します。
Resumeには他の構文もありますので、調べてみてください。

エラー処理の中でOn Error GoToを記述することはできません。


エラー処理の基本的な構造は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Exit Sub

ErrorTrap1:
  'エラー処理
  Resume Next

End Sub


エラー処理が2つある場合は、

Sub Macro1()

On Error GoTo ErrorTrap1
    '-エラーの発生するコード 1
On Error GoTo 0

Do
  On Error GoTo ErrorTrap2
    '-エラーの発生するコード 2
  On Error GoTo 0
Loop

Exit Sub

...続きを読む

Q$ka = $_REQUEST[\"FFF\"];が変数に代入できなくて困ってます┐(´~`;)┌

今任意の名前でファイルを生成するPHPを作っています。ファイルの中身に$ka = $_REQUEST[\"FFF\"];というコードをファイル作成時に書き込みたいんですが、どうも変数 $HTMLにうまく代入されてくれません。もし、どこが問題なのかわかる方どなたかいらっしゃいましたらアドバイスお願いしますΣo(≧~≦)o。


下にコードを書いておきます。


<form name="form" action="A.php" method="POST">
HTMLファイルの名前
<input name="DAI" type="text">
<input type="submit" value="作成">
</form>
<?php
$DAI = $_REQUEST["DAI"];
?>





<!-- 【この下のコード$ka = $_REQUEST[\"FFF\"];がうまく変数$HTMLに代入されません】 -->
<? $HTML="$ka = $_REQUEST[\"FFF\"];" ?>





<?php
$fp = fopen("$DAI.php","a");
fputs($fp,$HTML);
fclose($fp);
echo "ファイル作成成功!";
?>
<?
print"$DAIが作成されました";
?>
<?
print"<A href=\"http://localhost/$DAI.php\">作成された貴方のファイルへのリンク</A>";
?>

今任意の名前でファイルを生成するPHPを作っています。ファイルの中身に$ka = $_REQUEST[\"FFF\"];というコードをファイル作成時に書き込みたいんですが、どうも変数 $HTMLにうまく代入されてくれません。もし、どこが問題なのかわかる方どなたかいらっしゃいましたらアドバイスお願いしますΣo(≧~≦)o。


下にコードを書いておきます。


<form name="form" action="A.php" method="POST">
HTMLファイルの名前
<input name="DAI" type="text">
<input type="submit" value="作成">
</form>
<?p...続きを読む

Aベストアンサー

<? $HTML='$ka = $_REQUEST["FFF"];' ?>
こういうことでしょうか?

シングルクォートは変数を評価しません。

Qステレオミキサーの「realtek high definition a

ステレオミキサーの「realtek high definition audio 6.0.1.5490」より新しいバージョンのものはありますか?更新したいので。

Aベストアンサー

こんばんは。

現状ですと、[R2.47]の"6.0.1.6083"が最新のようです。
RealtekのOHPからダウンロードできます。
http://www.realtek.com.tw/downloads/downloadsCheck.aspx?Langid=4&PNid=24&PFid=24&Level=4&Conn=3&DownTypeID=3&GetDown=false

Qループ forに関して for($i = $num ; $i < $max ; $i++)

phpの初心者です。

以下の記述ですが、上手にループしてくれません。

for($i = $num ; $i < $max ; $i++)

$num の部分に「0」を入れると稼動するのですが、変数を代入したいというのが希望です。

方法があったらご教授下さい。

Aベストアンサー

もう一度全体のコードを見直してみてください。
問題なく動作します。

$num = 1;
$max = 5;

for($i = $num ; $i < $max ; $i++){
echo $i."<br />";
}


人気Q&Aランキング

おすすめ情報