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

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

A 回答 (7件)

ついでに・・・


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

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

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

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

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

この回答への補足

ここに模範解答を貼り付けさせて頂きます。

<html>
<head><title>kadai2-2</title></head>
<body>
<?php
$infp = fopen("c:\apache2\htdocs\kadai2_2in.txt", "r");
$otfp = fopen("c:\apache2\htdocs\kadai2_2ot.txt", "w");
while(!feof($infp)){
$rep = preg_replace("/\"/","",fgets($infp));
fputs($otfp,$rep);
}
fclose($infp);
fclose($otfp);
?>
</body>
</html>

補足日時:2009/05/23 16:53
    • good
    • 0
この回答へのお礼

再度のアドバイスありがとうございます。
>PHPつかうならPHPの使用バージョン書いてください
すいません。PHP5.2.9ですね。

>ただ、ファイルに書くときは「fwrite」をつかうものなので
>あえてえ「使用しない」理由がわかりません。
正直言いますと、自分は今PHP講座の通信教育を受けてまして、これは、その課題なんですね。
こういう風に書くと、その講座は良くないと思われるかもしれませんが、まだfwrite関数を使用していないのですね。
その代わり、fopen関数のモードを使用するようにという事なんだと思います。
ちょうど今自分なりにソースコードを書いてみました。
結果は少しの進歩はありましたが、失敗でした。
もし宜しければ、見て頂けると大変有り難いです。

お礼日時:2009/05/19 20:31

構文ミスです。


while (($data = fgetcsv($fp,3000,",")) !== false) {
        ↓
while (($data = fgetcsv($infp,3000,",")) !== false) {

ついつい癖で$fpを使ってしまうもので、、、
    • good
    • 0

yambejpさんのご指摘のように、単純にfgetcsv()を利用すれば、わざわざ正規表現など使わなくても、ダブルクォーテーションは勝手に外れてくれます。


その、sampleout.txtをどのように利用するかはわかりませんが、単純に前後のダブルクォーテーションを外すだけなら、、、
<?php
$infp = fopen("C:\Apache2\htdocs\samplein.txt", "r");
$otfp = fopen("C:\Apache2\htdocs\sampleout.txt", "r+");
$outcsv="";
while (($data = fgetcsv($fp,3000,",")) !== false) {
$outcsv.=implode(",",$data)."\n";
}
fclose($infp);
fwrite($otfp,$outcsv);
fclose($otfp);
?>
確認していなので、構文にミスがあったらゴメンナサイ

この回答への補足

自分はPHP初心者です。
自分なりに作成したプログラムを見て頂けませんでしょうか。

<?php
$infp = fopen("C:\Apache2\htdocs\kadai2_2in.txt", "r");
$otfp = fopen("C:\Apache2\htdocs\kadai2_2out.txt", "w+");
while (!feof($infp)) {
$buffer = fgetcsv($infp);
fputs($otfp, $buffer);

}
fclose($infp);
fclose($otfp);
?>

これだと実行できるのですが、sampleout.txtに書き込まれるのは、ArrayArrayArrayでした。

これを実行させると、

補足日時:2009/05/19 20:10
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
しかも、ソースコードまで書いて頂き、感謝します。
ただ、少し問題点があります。
まず、私の書いたソースコードなのですが、
$otfp = fopen("C:\Apache2\htdocs\sampleout.txt", "r+");
↑これですね。
モードの部分ですが、必ずしも『r+』とは限らないという事です。
他に適したモードがあるかもしれません。
後は3000の部分ですね。
この数字は何を意味しているのでしょうか。
後はPHP初心者なので意見できる立場でもないのですが、先ほどモードが適しているかどうかは分からない、と書きました。
なので、fwrite関数を使用しないで書き込む事はできないものでしょうか。
すいません、PHP初心者なものでまだ知識足らずの部分が多々ありまして。
ご気分を害されたとしたら、深くお詫び致します。

お礼日時:2009/05/19 19:51

条件定義が不十分。



データ中にダブルクォーテーションあった場合はどうするつもり?
通常csvファイルではデータ中のダブルクォーテーションを
二重ダブルクォーテーションで表記します。

「東京都"港区"赤坂」なら「東京都""港区""赤坂」というcsvデータ
になるということ。

単純なfreadで吸い上げてstr_replaceだとすべてのダブルクォーテーション
がきえてしまいます。

基本はfgetcsv()など、csvのルールにのっとったファイルI/Oを
使うのが余分な作業を減らせるので吉。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
まだPHP初心者なものでfgetcsv関数は初めて知りました。
今検索かけて調べています。
新しい知識が得られた事を心から感謝します。

お礼日時:2009/05/19 19:30

すみません、3行目は


if($f2 = fopen("sampleout.txt","r")){
ではなく
if($f2 = fopen("sampleout.txt","w")){
でした
    • good
    • 0

単純にダブルクォーテーションを取り除くだけでしたら


str_replaceだけで済んでしまいますが
取り除くダブルクォーテーションになんらかの条件は
ないのでしょうか?

動作検証していませんが特に条件がない場合はこんな感じで

if($f1 = fopen("samplein.txt","r")){
$s = fread($f1, filesize($f1));
if($f2 = fopen("sampleout.txt","r")){
$s = str_replace('"','',$s);
fwrite($f2,$s);
fclose($f2);
}
fclose($f1);
}
    • good
    • 0
この回答へのお礼

順番が逆転してしまいました。
アドバイスありがとうございます。
そうですね。
str_replace関数ですね。
すっかり忘れていました。

お礼日時:2009/05/19 18:48

http://osaka.cool.ne.jp/rh-riko/Flash-PHP/flashP …

このページは使えますでしょうか?

ちょっとよくわからないのですが、
指定ファイル(hoge.txt)を開く→中身を読み込む→「”」があった場合は空文字に変換→hoge.txtに書き込む→保存→閉じる
といった感じでしょうか?
    • good
    • 0
この回答へのお礼

アドバイスとURLを貼り付けて頂き、ありがとうございます。
>ちょっとよくわからないのですが、
>指定ファイル(hoge.txt)を開く→中身を読み込む→「”」があった場
合は空文字に変換→hoge.txtに書き込む→保存→閉じる
>といった感じでしょうか?
説明が不足していて大変申し訳ありません。
少しソースコードを書いてみます。
ただし、自分が書いたものなので必ずしも正しいとは限りません。
<?php
$infp = fopen("C:\Apache2\htdocs\samplein.txt", "r");
$otfp = fopen("C:\Apache2\htdocs\sampleout.txt", "r+");
while ($infp) {
$buffer = fgets($infp);
??????????????????????;
}
fclose($infp);
fclose($otfp);
?>
問題は?の部分です。
正規表現を使って"(ダブルクォーテーション)を排除します。
特に空文字に変換する必要はありません。
どうでしょうか。
少しはマシになったでしょうか。

お礼日時:2009/05/19 10:00

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

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

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

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

Qダブルクォーテーション(””)を出力する方法(java)

javaでダブルクォーテーション(””)を出力する方法を教えて下さい。

ダブルクォーテーションが含まれたテキストを出力しようと、
fout.print("○○○");
のようにして○○○の中にダブルクォーテーションが含まれたテキストを入力するとエラーが起こります。
○○○の中の一つ目のダブルクォーテーションが閉じるダブルクォーテーションと認識されてしまっているようなのです。

どうしたらダブルクォーテーションを出力することができるか教えて下さい。
よろしくお願いします。

Aベストアンサー

こんにちは、

今ひとつ、意味解りませんが、下記のようなことですか??

System.out.println("\"ssss\"");

出力結果
"ssss"

Q$test = array(80,60,22,50,75);を(22,60,80,50,75);変更

https://oshiete.goo.ne.jp/qa/9231613.html から
 $test = array(0=>80,1=>60,2=>22,3=>50,4=>75); のご回答をもとに
$test = array(80,60,22,50,75);を$test = array(22,60,80,50,75);に変更しました。
 結果が”最高得点22です。”と予想しておりました・・しかし、変わらずに
 ”最高得点は80です。”のままでした!?この場合ですが、考え方はとしまして、
 $test = array(2=>22,1=>60,0=>80,3=>50,4=>75);となったので、以上の結果となっ
との考えで間違いないでしょうか?
 よろしくお願いいたします。

Aベストアンサー

表現は未熟ではありませんが、Campus2さんがどのような思考をしているのかという意味で
国語の問題に近いと言っただけですのでご了承を〜

ちなみに今回のはキーに関しては何でもいいのです。
以下のコードでも最高点は80と出力されます。

<?php
//$test = array(80,60,22,50,75);
$test = array("apple"=>80,"tomato"=>60,"banana"=>22,"milk"=>50,"cake"=>75);

$max = 0;

foreach($test as $id => $value){
if($max < $value) $max = $value;
}

print "<p>最高得点{$max}です。</p>";
?>

また$id => $valueも関係性を示しているだけなので、
foreach文は以下のようにも記述できます(紛らわしいのでこんな書き方しませんが)。

foreach($test as $aaa => $bbb){
if($max < $bbb) $max = $bbb;
}

///////////////////////////////////////////

過去の質問
https://oshiete.goo.ne.jp/qa/9200257.html
でも答えましたが、

例えば配列
array("22","80", "75","60","50")
はキーを何も指定しない場合以下と同じになります。
array('0' =>"22",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"50");

array("50","80", "75","60","22")
と並び変えても
array('0' =>"50",'1' =>"80", '2' =>"75",'3' =>"60",'4' =>"22");
のままです。

表現は未熟ではありませんが、Campus2さんがどのような思考をしているのかという意味で
国語の問題に近いと言っただけですのでご了承を〜

ちなみに今回のはキーに関しては何でもいいのです。
以下のコードでも最高点は80と出力されます。

<?php
//$test = array(80,60,22,50,75);
$test = array("apple"=>80,"tomato"=>60,"banana"=>22,"milk"=>50,"cake"=>75);

$max = 0;

foreach($test as $id => $value){
if($max < $value) $max = $value;
}

print "<p>最高得点{$max}です。</p>";
?>

また$id => $value...続きを読む

Q文末のダブルクォーテーションマークとピリオドの位置関係

英語の質問です。米国では文の末尾がダブルクォーテーションマークとなる場合、ピリオドはその末尾のダブルクォーテーションマークの左(つまりダブルクォーテーションによる引用の内側)になるのが一般的ですか。

すなわち、例えば:

This is a "pen".
This is a "pen."

では、下の文の様式になるのが一般的ですか。

Aベストアンサー

以前同じような質問があり、そのとき少し調べて回答したことがあります。
結論を言えば、「米国では」ピリオドは末尾のダブルクォーテーションマークの前におくのが普通です。

典拠として二つの本を挙げておきます。
まず、The Chicago Manual of Style によると (6・8)
「ピリオドやコンマは、末尾のクォーテーションマークの前に置かれる。クォーテーションマークがダブルでもシングルでも同じである。これは、このマニュアルの初版(1908年)以前から用いられている伝統的方式である。」
とされています。
ただし、6・10では「別の方式」として
「The Oxford Guide to Style に述べられている、しばしば「イギリス方式」(the British style) と呼ばれるものによれば・・・引用される資料にもともと含まれている句読点だけがクォーテーションマークの内部に含まれる。他の句読点は末尾のクォーテーションマークの後にくる」と注記されています。

また、Fowler's Modern English Usage (イギリス英語の標準的用法の権威ある解説書)の "quotation marks"の項を見ると、アメリカの本とは逆に、
Our subject is the age of Latin literature known as 'silver'.
という例を挙げて、'silver’のような単語には句読点は属していないので、こうした場合句読点はクォーテーションマークの外側に置かれるべきであると説明した後に「アメリカ英語では」末尾のクォーテーションマークがピリオドの外に置かれることが多いと注記しています

参考URL:http://oshiete1.goo.ne.jp/qa887609.html

以前同じような質問があり、そのとき少し調べて回答したことがあります。
結論を言えば、「米国では」ピリオドは末尾のダブルクォーテーションマークの前におくのが普通です。

典拠として二つの本を挙げておきます。
まず、The Chicago Manual of Style によると (6・8)
「ピリオドやコンマは、末尾のクォーテーションマークの前に置かれる。クォーテーションマークがダブルでもシングルでも同じである。これは、このマニュアルの初版(1908年)以前から用いられている伝統的方式である。」
とされていま...続きを読む

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シングルクォーテーションとダブルクォーテーション

いつも楽しく拝見させて頂いています。
初心者ですが宜しくお願いします。
シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。
select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。
以上宜しくお願いします。

Aベストアンサー

文字定数は、「'」で囲む必要があります。

例)SELECT 'ABC' →文字定数の'ABC'と解釈される
SELECT ABC →ABCは、表名や列名と解釈される

数値定数は、多くのRDBMSでは「'」で囲みませんが、MySQLでは独自仕様として囲むことが可能です。

例)SELECT 123 →数値定数の123
SELECT '123' →一般的なRDBMSでは文字として扱われる。MySQLでは数値としても扱える

殆どのRDBMSには予約語があり、RDBMSでは予約語を頼りに構文解析します。表名や列名に英単語やその組み合わせを使おうとすると、予約語とぶつかってしまうことがあります。

例)SELECT FROM FROM →予約語のSELECT FROMの間に「*」や列名が指定されておらず、RDBMSは構文誤りと認識する

それを回避するために、標準SQLでは「"」で表名や列名を囲みます。MySQLでは、文字コードにANSIを使う場合は、「"」で、それ以外には独自仕様で「`」(バッククォーテーション)を使います。

例)SELECT "FROM " FROM →多くのRDBMSでは「"」で囲むことで、RDBMSに最初の「FROM」は、列などの名前であることを知らせる
SELECT `FROM` FROM →ANSI以外のMySQLでは、「`」(バッククォーテション)で囲む

また、「-」(ハイフォン)を表名や列名に使う場合、「"」で囲まないと、SQLでは減算と解釈されます。このように、「"」で囲むことで、記号なども名前に使用することができます。

例)SELECT ABC-DEF →列ABCと列DEFの減算と解釈される
  SELECT "ABC-DEF" →列「ABC-DEF」と解釈される
  SELECT `ABC-DEF' →ANSI以外のMySQLでは、「"」でなく「`」(バッククォーテション)を使用

文字定数は、「'」で囲む必要があります。

例)SELECT 'ABC' →文字定数の'ABC'と解釈される
SELECT ABC →ABCは、表名や列名と解釈される

数値定数は、多くのRDBMSでは「'」で囲みませんが、MySQLでは独自仕様として囲むことが可能です。

例)SELECT 123 →数値定数の123
SELECT '123' →一般的なRDBMSでは文字として扱われる。MySQLでは数値としても扱える

殆どのRDBMSには予約語があり、RDBMSでは予約語を頼りに構文解析します。表名や列名に英単語やその組み合わせを使おうとすると、予...続きを読む

Q複数のtxtファイル内のデータを抽出して、別のtxtファイルを作成

登録者に対して、メールを送信するスクリプトを組もうと考えています。

登録はtxtファイルを作成する形式で、作成されるファイルは
20070927_190756.txt
のようなものです。

この中には、メールアドレスだけが記述されています。

dataディレクトリ内にこのファイルが登録者の数だけ格納されているのですが、これらの登録者に対して一斉にメールを配信する際に、これらのファイルからメールアドレスを抜き出して例えば「members.txt」を作成し、配信しようと考えています。

登録の部分、送信の部分につきましては、独力でなんとかできたのですが、この「ファイルからデータを抽出して別ファイルにする」ということができないので困っています。

どなたかお知恵を拝借できないでしょうか。
よろしくお願い致します。

Aベストアンサー

foreach( glob("*.txt") as $filename )
{
$file = file( $filename );
echo $file[0];
}


効率が悪そうですが。ご参考まで

QEXCEL→CSV保存時のダブルクォーテーションについて

下記のようにEXCELマクロにてEXCELファイルをCSVファイルに保存しようとしています。
NewBook.SaveAs
Filename:="test.csv",
FileFormat:=xlCSV,
CreateBackup:=False

このとき、セル値にダブルクォーテーションが含まれていると、出力CSVファイルの値がダブルクォーテーションで囲まれてしまいます。

●ダブルクォーテーションが含まれていない場合
セル値→A列:ABC
    B列:DEF
CSVファイル→ABC,DEF
●ダブルクォーテーションが含まれている場合
セル値→A列:A"C
    B列:DEF
CSVファイル→"A"C",DEF

後者の場合もダブルクォーテーションで囲まれないようにするにはどうすればよいでしょうか。

Aベストアンサー

こんにちは。

Sub sample()
Dim s As String
Dim r As Long, c As Long, i As Long, n As Long
With Range("A1").CurrentRegion
r = .Rows.Count
c = .Columns.Count
End With
n = FreeFile
Open "D:\test.csv" For Output As n
For i = 1 To r
s = Join(WorksheetFunction.Index(Cells(i, 1).Resize(, c).Value, 0), ",")
Print #n, s
Next i
Close #n
End Sub

…な感じでしょうか。

QPHP,RUBY,Perl,JSPで実現可?

はじめまして。
このカテゴリーでいいのかどうか分かりませんが、
サーバーサイドで実現できないかどうか、質問させてください。

現在、ひとつのLAN上に、計測器(X)とパソコン(P)が接続され、
PはXから定期的に計測値を取得してデータベースにに書き込んでおり、
Pでは最新値や経過時間による値の変化のグラフを表示しているのですが、
これをWEBからいつでも誰でも見られるようにできないかと言われています。
コンピュータに詳しくなく、よく分かりません。

ホームページなどは、契約したレンタルサーバー宛てにHTMLをFTP送信すれば表示されます。
(実際ウチの会社のHPもそうやって月に一度私がアップして更新しています。)、
同様に、定期的にグラフを画像(GIF等)化し、HTMLに組み込んでFTPでサーバーにアップするのも一つの手だと思いました。(※)
でも、毎回グラフを画像化するのに時間がかかったり、送信の付加も高そうです。

そんな中、最近サーバーサイドの言語もいろいろあって、利用できないかと思っているところです。
しかし、素人の私はサーバーサイドと言うものを、
・サーバー側にDBがあり、
・クライアントからのリクエストに応じてそのDBから値を取得して都度HTMLを作り、
・そのHTMLをクライアントに返す
というもの、と理解していまして、そこで質問なのですが、

1)
サーバーサイドというものについて、上の私の理解は合っていますでしょうか?

2)
1)での私の理解が合っているとすると、今回のケースのようにDBがこちら側にある場合、サーバーサイドでクライアントからの要求に応じてHTMLを作って送ることはそもそもできないのでしょうか?

3)
2)のことができないとすると、サーバー上にDBがあればできるのでしょうか?
つまり、サーバー上にDBを置き、PはXの値を自分のDBに登録するのではなく、サーバー上のDBに書くようにすればできるのでしょうか?
もしできるとしても、サーバー上のDBの値を更新する方法は分かりませんが...
でもなんとかなるならサーバー側でサーバーサイドの言語を使ってグラフが描けそうな気が...

4)
もし3)のことができないとすると、上の※の方法しかないのでしょうか?

5)
そもそも、今回の私のケースのような場合、一般的にどのような方法で実現できるでしょうか?
サーバーのレンタル代などのランニングコストのかからない方法だとありがたいのですが...

サーバーサイドでなんとかなりそうなら、
最近興味が出てきましたので頑張って勉強したいと思います。
Rubyとか、MySQLとか...

正直言って現時点ではちんぷんかんぷんなため、
とりとめのない質問のようになってしまい申し訳ありません。
どうぞよいお知恵をかしてください。

よろしくお願いいたします。

はじめまして。
このカテゴリーでいいのかどうか分かりませんが、
サーバーサイドで実現できないかどうか、質問させてください。

現在、ひとつのLAN上に、計測器(X)とパソコン(P)が接続され、
PはXから定期的に計測値を取得してデータベースにに書き込んでおり、
Pでは最新値や経過時間による値の変化のグラフを表示しているのですが、
これをWEBからいつでも誰でも見られるようにできないかと言われています。
コンピュータに詳しくなく、よく分かりません。

ホームページなどは、契約したレンタルサーバー宛て...続きを読む

Aベストアンサー

No.4です。Ruby MySQLのことが出てきましたので、補足です。
質問者さんが職業としてのプログラマーを目指しているのではなく、お手軽にデータベースを使いたいのでしたら、Ruby on Railsに入っているactiverecordによるデータベースアクセスをお勧めします。
Ruby on Railsをインストールすればすぐに使えるようになります。もしかしたらsqlite3やMySQLを使うために追加ソフトが必要かも知れませんが、ネットで情報がたくさんあります。
sqliteが簡単なので例を示します。GUIで設定できるソフトがいろいろあるので、それで
データーベースファイル名 ondo.sqlite
テーブル名 temperatures
フィールド名 dateとか適当にいれて
データも表ソフトのような感じで仮に入れておきます。
Rubyのプログラムの全部を書くと
require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection(
:adapter => "sqlite3",
:database => "ondo.sqlite"
)
class Temperature < ActiveRecord::Base
end

p Temperature.find_each{|a| p a}
以上で、データベースに接続して全部のデータが出力されます。プログラムを知っている人にとってはものすごく不思議な感じですが、activerecordがうまく処理してくれます。
ActiveRecord::Base.establish_connection(
の中をMySQL用に変えればそのままMySQLで使えるようになります。SQLは全然出てきません。
ご参考に

No.4です。Ruby MySQLのことが出てきましたので、補足です。
質問者さんが職業としてのプログラマーを目指しているのではなく、お手軽にデータベースを使いたいのでしたら、Ruby on Railsに入っているactiverecordによるデータベースアクセスをお勧めします。
Ruby on Railsをインストールすればすぐに使えるようになります。もしかしたらsqlite3やMySQLを使うために追加ソフトが必要かも知れませんが、ネットで情報がたくさんあります。
sqliteが簡単なので例を示します。GUIで設定できるソフトがいろいろあるの...続きを読む

Q文字列に含まれているダブルクォーテーション( ")を置換する

文字列に含まれているダブルクォーテーションを除きたいのですが、これをSubstitute関数で置換しようとしてもうまくいきません。ダブルクォーテーションが文字列を指定するために使われるせいだと思うのですが、"を文字列として指定する方法はあるのでしょうか?
よろしくお願いします。

Aベストアンサー

=SUBSTITUTE(A1,CHAR(34),"a")

のように、CHAR(34)で表せば大丈夫だと思います。

Q画像ファイル(.bmp, gif, .jpg, .png)など縦横サイズを取得する方法

PHP5でホームページにある画像ファイル(.bmp, gif, .jpg, .png)など縦横サイズを取得する方法はありますか?

例えば、Yahooのロゴ
http://k.yimg.jp/images/top/sp/logo.gif
は、221px, 59pxm GIFnなので、以下のように取得したいです。

$ret = hogehoge???($url);

echo $ret["width"]; // 221px
echo $ret["height"]; // 59px
echo $ret["type"]; // gif

Aベストアンサー

http://jp2.php.net/getimagesize
GDライブラリの、getimagesize関数を使えばいけそうです。


人気Q&Aランキング