はじめてプログラムに挑戦している者です。
独習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

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

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フォームにダブルクォーテーションが含まれているとデータベースエラー

HTMLのフォームから投稿された文字列を取得し、その文字列と一致する語をデータベース(MySQL)から検索するシステムを作成しております。
入力された文字列を調べるということまでは完了したものの、フォームに "(ダブルクォーテーション)が入っておりますとエラーが出るというものです。
原因は分かっているのですけれども、その対処法が思い浮かばずに困っております。
ソースは以下の通りです。


[form.html]
<form action="submit.php" method="POST">
<input type="text" name="word">
<input type="submit" name="submit" value="GO">
</form>

[submit.php]
$word = $_POST['word'];
$query_word = mysql_query(
 'SELECT * FROM tbword WHERE word like "%'.$word.'%";'
);
$result_word = mysql_fetch_object( $query_word );


上記の方法ですと、検索に「教えて"goo」となっていた場合、実際にはSQLに直されると
 (省略)WHERE word like "教えて"goo";
となってしまうからのようです。

ダブルクォーテーションを予め省くことも考えましたが、それではダブルクォーテーションを含む語を検索できなくなってしまいます。
どうにか、よい方法は無いでしょうか?宜しくお願い致します

HTMLのフォームから投稿された文字列を取得し、その文字列と一致する語をデータベース(MySQL)から検索するシステムを作成しております。
入力された文字列を調べるということまでは完了したものの、フォームに "(ダブルクォーテーション)が入っておりますとエラーが出るというものです。
原因は分かっているのですけれども、その対処法が思い浮かばずに困っております。
ソースは以下の通りです。


[form.html]
<form action="submit.php" method="POST">
<input type="text" name="word">
<input t...続きを読む

Aベストアンサー

$wordを直に使わないで、引用符を二重化するエンコード処理を
施してからにしてはいかがでしょう。
×:WHERE word like "教えて"goo";
○:WHERE word like "教えて""goo";

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/string-syntax.html

Qエラー番号 : 0x800CCC90

2週間ほど前から、OutlookExpressのメール受信がスムーズに行きません。
 エラーメッセージは

「サーバーはエラーで応答しました。 アカウント : 'ybbpop.mail.yahoo.co.jp', サーバー : 'ybbpop.mail.yahoo.co.jp', プロトコル : POP3, サーバーの応答 : '-ERR problem retrieving message.', ポート : 110, セキュリティ (SSL): なし, サーバー エラー : 0x800CCC90, エラー番号 : 0x800CCC90」
 です。

 何度か送受信を押しますと10回ぐらいしてからメール受信します。
 日に日に何度も送受信を押さないと受信しません。
どなたか対策を教えてください。
 

Aベストアンサー

参考URLを参照してください。

参考URLのエラー番号の末尾が「92」になっていますが「90」と同じです。

時々接続されると言うことのようなので、設定等が間違っていない場合でも、
このような現象が起きることがあります。
そのときは暫く時間を置いて送受信すると接続出来ると思います。

参考URL:http://help.yahoo.co.jp/help/jp/mail/mailsoft/mailsoft-26.html

QBBSにダブルクォーテーションを入力したい

php+postgreSQLで,次に示すような「掲示板」のようなものを作りました。
1.フォームに入力
2.入力内容の確認画面を提示する
3.OKで,入力完了

このシステムで”(ダブルクォーテーション)もフォーム内容に入力できるようにしたいのですが,できません。

というのも,上記2の確認画面を出すソース上で,次に示すように,ダブルクォーテーションがダブってしまうからです。($commentはフォームの内容であり,そこにダブルクォーテーションが含まれている)。
<input type="hidden" name="comment" value="<?echo $comment;?>">

解決策ございましたら,御教示を受け賜りたく。よろしくお願いいたします。

Aベストアンサー

補足読みました。
参考URLを見ていただければ比較的簡単にわかると
思います。
#このセッションはクッキーを使わないので、携帯
#電話などでも有効です。

ちなみにこの参考URLは日本PHPユーザ会という
サイトのマニュアル(実際には本体サーバと連携)
なので、トップページを「お気に入り」や
「Bookmark」に入れておいた方がいいかと思います。

ちなみに日本PHPユーザ会のURLは
http://www.php.gr.jp/
です。こちらにはメーリングリストなどがあるので
それも便利かな?

参考URL:http://www.php.net/manual/ja/ref.session.php

QCarbon Copy Cloner Error code: 51

MacBookProをCarbon Copy Clornerで外付けのHDDにBackUp(4回)しました。4回とも同じ問題で止まってしまいました。

”最終段階でバックアップ中に問題が発生しました。”

Error code: 51

でCompleteしません。
環境はOS Tiger 10.4.11, 外付けのHDDはLaCie 160GBでFirewireで接続しています。

以下にlogの問題があると思われる箇所をコピーします。
是非、解決策を教えてください。
お願いいたします。

--------------copy------------------
16:22:34Warning user about performing a destructive action.
16:22:36User chose to proceed with destructive action.
16:22:36コピー先ボリュームの所有権を有効にしています...
16:22:43コピー先ボリュームの所有権が有効になりました。
16:22:43コピー先ボリュームのアクセス制御リストが有効になりました。
16:22:43コピー元ボリュームへの排他アクセスを確認しています...
16:22:43Aborting block-level clone, starting over with file-level clone.
16:22:43検証しています...
16:22:43同期エンジンを初期化しています...
16:22:44クローンを作成しています...
18:00:24CCC はコピー先ボリュームのアクセス制御リストを有効にすることができませんでした。
18:00:26CCC はコピー先ボリュームのアクセス制御リストを有効にすることができませんでした。
18:03:11rsync error: some files/attrs were not transferred (see previous errors) (code 23) at /Volumes/Home/Users/bombich/Development/Bombich_Software/rsync-3.0.5pre2/main.c(1047) [sender=3.0.5pre2] (51)
18:03:12rsync: バックアップ中に問題が発生しました。, Error code: 51
18:03:13Sync Engine warnings: (
"rsync: set_acl: sys_acl_set_file(Volumes/iDisk, ACL_TYPE_EXTENDED): Operation not supported (45)",
"rsync: set_acl: sys_acl_set_file(Volumes/iDisk, ACL_TYPE_EXTENDED): Operation not supported (45)",
"rsync error: some files/attrs were not transferred (see previous errors) (code 23) at /Volumes/Home/Users/bombich/Development/Bombich_Software/rsync-3.0.5pre2/main.c(1047) [sender=3.0.5pre2]"
)
================================================================================

MacBookProをCarbon Copy Clornerで外付けのHDDにBackUp(4回)しました。4回とも同じ問題で止まってしまいました。

”最終段階でバックアップ中に問題が発生しました。”

Error code: 51

でCompleteしません。
環境はOS Tiger 10.4.11, 外付けのHDDはLaCie 160GBでFirewireで接続しています。

以下にlogの問題があると思われる箇所をコピーします。
是非、解決策を教えてください。
お願いいたします。

--------------copy------------------
16:22:34Warning user about performing a destru...続きを読む

Aベストアンサー

まずマルチはやめてください.

昨日も使いましたが
CCCの最新バージョンは3.1.3です.
開始前にアクセス権の修復.できればシステムディスクで起動してディスクの修復とアクセス権の修復.
LacieはGUIDパーティションですよね.
オプションでコピー先ボリュームを消去.

Q変数とダブルクォーテーションの関係について

$cookie1["$i"] = $col["$field["$i"]"];

変数とダブルクォーテーションの記載方法ですが、
このソースで正常に動作させるには、”をどの様に記載すれば良いのでしょうか。
どうぞ宜しくお願い致します。

Aベストアンサー

配列の要素は、変数なので、ダブルクォーテーションは、不要です。
なので、以下のように書けばいいと思います。
$cookie1[$i] = $col[$field[$i]];

Qcanon PIXUS MP600 エラーコード6B00

電源を入れると、ディスプレイにエラー 6B00 プリンタトラブルが発生しましたと表示され、それ以降まったく動作しません、プリンタカバーを開けてもプリントヘッドが交換位置に移動しません。
メーカーへは問い合わせ済みです。
出来れば、自分で修理したいのですが、推測される原因、修理方法等
教えていただけないでしょうか?
googleでcanon error 6B00で検索したところ何点かヒットしましたが、外国語でいまいちわかりません。
よろしくお願いします。

Aベストアンサー

プリンタの修理屋です。

英語には自信はありませんけど、大体の意味は「ヘッドの下の辺りに、何か遺物が引っかかっていることがあるので、プリンタをさかさまにして振ってみてください」で良いと思います。
実はこの作業に関しては、(別の故障の対応として)このカテで紹介しているのですが、今回のエラーに関しては無関係と考えても良いでしょう。

エラーそのものは紙送りモーターの動作不良ですが、メインの紙送りではなく、シートフィーダー内のモーターのようです。
原因としてはモーター不良か、メイン基板の不良になるようです。
実はモーター単品の部品設定は無く、シートフィーダーの交換になります。

おそらく、英文の案内は紙の破片がギアに噛み込んでモーターが回らないことを想定しているのでしょうけど、場所から考えてそういったものが入っていくようなところではないでしょう。
紙が詰まったときに無理矢理引き抜いたとか、エアダスターでやたらに吹きまくった等でなければ、トラブルが起こることも考えにくいですね。

このユニットを交換するためにはが外装カバーをすべて外し、メカユニット自体をおろ差無ければ出来ない作業です。
メイン基板が壊れているとしたら、廃インク吸収体の交換も必要になるケースもあります。
(No2さんが言っているパッドは正式には廃インク吸収体といって、メカユニットの下に仕込まれています。ここまでバラすのが大変です)

メイン基板に廃インクの量が記録されています。そのデーターを持ち越すことが出来ないので、一定の量(若干の余裕を持たせています)を超えていたら交換が必要になるわけです。

プリンタの修理屋です。

英語には自信はありませんけど、大体の意味は「ヘッドの下の辺りに、何か遺物が引っかかっていることがあるので、プリンタをさかさまにして振ってみてください」で良いと思います。
実はこの作業に関しては、(別の故障の対応として)このカテで紹介しているのですが、今回のエラーに関しては無関係と考えても良いでしょう。

エラーそのものは紙送りモーターの動作不良ですが、メインの紙送りではなく、シートフィーダー内のモーターのようです。
原因としてはモーター不良か、メ...続きを読む

Qtxtファイルに書かれた"東京都”のダブルクォーテーションを消したい

例えばsamplein.txtに以下のデータが書かれていたとします。
1000,"東京都港区","港一郎"
1001,"千葉県市川市","市川次郎"
1002,"大阪府大阪市","大阪三郎"
これを"(ダブルクォーテーション)だけを全て取り除いてsampleout.txtに書き込むプログラムを作りたいのですが。
これには私の苦手な(どうでもいい事ですが)正規表現を使用します。
私の頭脳では難しい、という感じです。
ヒントでも構いません。どうぞ宜しくお願い致します。

Aベストアンサー

ついでに・・・
PHPつかうならPHPの使用バージョン書いてください
もしPHP5以降をご利用でしたら

>fwrite関数を使用しないで書き込む事はできないものでしょうか。

fputcsv()なんて関数もあります。
ただ、ファイルに書くときは「fwrite」をつかうものなので
あえてえ「使用しない」理由がわかりません。

とりあえず、初心者なのはわかったので、とにかくマニュアル読んでください
まずはそこからでしょう。

http://www.php.net/manual/ja/refs.fileprocess.file.php
http://www.php.net/manual/ja/function.fgetcsv.php

QNode.jsのWebプログラム(javascript)からの呼び出し

Webプログラム(javascript)から、RS-232C接続のデータを取得する事を検討しています。

それには、以下に記述されているNode.jsを使用すれば、RS-232Cのデータが取得できる分かったのですが、
【Node.jsでRS232C通信を試してみる - undefined】
http://blog.bokuweb.me/entry/node-serial

これを実行するには、コマンドプロンプトから
node xxx.js
で起動しないと、Node.jsのモジュールが利用できないのではと考えています。

これを、コマンドプロンプトから起動するのではなく、Webプログラムのjavascriptから呼び出すには、どのようにすればいいのでしょうか。

ご教授下さい。

以上。よろしくお願い致します。

Aベストアンサー

Web プログラムの形態が不明なので、少々答えづらいのですが。

案1.
node.js で、シリアルポートを叩いた結果を JSON 形式で出力する単独プログラムを用意
"Web プログラム" のサーバー側にて、単独プログラムを実行した結果をクライアントに表示

案2.
node.js で、シリアルポートを叩いた結果を JSON 形式で HTTP 応答する API を用意
"Web プログラム" の HTML 画面から AJAX にて API を呼び、結果を表示

案3.
node.js で、シリアルポートを叩いた結果を HTML 形式で HTTP 応答する "Web プログラム" を用意

Q「"」(ダブルクォーテーション)で囲まれた「,」をキャンセルしてcsvの値を抽出するには

111,"あいうえお",,"さしす,せそ"

のテキストファイルを

value[0] = 111
value[1] = あいうえお
value[2] =
value[3] = さしす,せそ

いう形に配列に入れたいと思っています。見てもらえばわかると思いますが、数字には「"」(ダブルクォーテーション)が付かなくて、「"」の中に入っている「,」(カンマ)は区切り記号とはみなされず値として取り込んでいます。

splitの正規表現など使えないか苦悩しています。いまだ解決方法見つけられず。
テキストファイルの「"」(ダブルクォーテーション)有り/無しや順番などは都度変更されます。

カンマ区切りで、「"」(ダブルクォーテーション)で囲まれた部分は外して値を取り出すにはどうしたらいいのでしょう?

ご存知の方、ご教授ください。

Aベストアンサー

テキストファイルは別なのですよね?

<?PHP
$handle = fopen("test.csv", "r");
while (($value = fgetcsv($handle, 1000, ",")) !== FALSE) {
print_r($value);
}
fclose($handle);
?>


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報