早速質問なんですが、変数$mojiに"aaaa bbbb cccc"と入っているものを
"aaaa,bbbb,cccc"としたいのですが下記のように
$moji = mbereg_replace("[ ]*$",",",$moji);
と、すると結果
"aaaa,,bbbb,,cccc"となってしまいます。
どなたかお分かりになられる方いらっしゃったら
ご教授お願いいたします。
失礼します。

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

php 置換」に関するQ&A: PHPの置換方法

A 回答 (1件)

ereg_replace関数を使うことで解決できます。



$moji = "aaaa bbbb cccc";
$moji = ereg_replace("\ ",",",$moji);

でうまくいくはずです。

第一引数が検索文字列(この場合、\のあとに半角スペースを入れる)、
第二引数が置換したい文字(この場合、三番目と四番目の「"」でくくられたカンマ)、
第三引数が置換対象文字列です。

関数の詳細については参考URLを参照してみてください。

参考URL:http://www.php.net/manual/ja/ref.pcre.php
    • good
    • 0
この回答へのお礼

masamisssさま、お早いレスありがとうございました。
おかげさまでご教授いただきましたとおりの方法で
うまくいきました。
参考URLもぜひのぞかせていただきます。
失礼します。

お礼日時:2001/06/26 12:04

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

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

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

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

Q読点とカンマの違い

「読点」の意味を辞書で引いたら下のようにでていたのですが、今ひとつよく意味が解りません。英語のカンマとはどう違うのか説明してほしいんですが。


味の切れ目を示すため、文中に施す「、」の符号。→句点

お願いします。

Aベストアンサー

「味の切れ目」→「意味の切れ目」ですね。(^^)

で,既に出ている回答とも重なりますが,日本語でも横書きの場合はカンマを使うことがあります。特に数字やアルファベットのあとに読点が来ると何となく間が抜けてみえるので,数字や欧文を多用する理工系の図書や雑誌などに多く見られます。
この文章もそのスタイルで書いています。なので,farsideさんの前の質問(http://oshiete1.goo.ne.jp/kotaeru.php3?q=98303)の回答で「今も使っていません。」と断言されてしまうと,私が書いているのは一体何なの?と,ちょっと困ってしまいます。
あ,よく見ると「正式な日本語の文章にカンマはありません。」でしたね。正式じゃないからいいのか。でも,それなら正式な日本語って何? 理工系の図書や雑誌は大多数が正式じゃないってこと? 「公用文の書き方」(という政府の内部規定)が正式? じゃ民間の文章はみんな正式じゃないのか? よくわからなくなってきました。

話を戻しますと,横書きの日本語でカンマを使うか読点を使うかは,単にその図書なり雑誌なりの出版社が編集方針として決めているだけのことで,機能的には従来からの読点と何ら変わりがありません(数値の区切りとかは別)。
では,その日本語本来の読点と,英文のカンマはどう違うかというと…基本的には,文(センテンス)の中に打って,意味上の切れ目を示すわけですから,似たようなものといってよいでしょう。
ただ,細かく見ていくと,そもそも英文法と日本語文法が違いますので,比較のしようがなくなってくると思います。たとえば,英語では関係節と主節を区切る時に使いますが,日本語ではそもそも関係代名詞がありませんね。

英語のカンマの打ち方は,文章のルールブックというのがいろいろとあって,それを見ると出ています。代表的なものとして,Chicago Manualの中から該当のページを参考URLに載せておきました。カンマの打ち方だけで,全部で27項目あります。

ちなみに,中国語では読点(、)は並列を表し(日本の中黒「・」のような使い方),それ以外はすべてカンマです。横書きでも縦書きでも一緒です。
日本語で書くとこんなふうになるでしょうか。「私は,彼女と一緒に,京都、奈良、大阪、神戸を旅して回った。」

参考URL:http://www.publicbookshelf.com/public_html/Manual_of_Style/commarule_i.html

「味の切れ目」→「意味の切れ目」ですね。(^^)

で,既に出ている回答とも重なりますが,日本語でも横書きの場合はカンマを使うことがあります。特に数字やアルファベットのあとに読点が来ると何となく間が抜けてみえるので,数字や欧文を多用する理工系の図書や雑誌などに多く見られます。
この文章もそのスタイルで書いています。なので,farsideさんの前の質問(http://oshiete1.goo.ne.jp/kotaeru.php3?q=98303)の回答で「今も使っていません。」と断言されてしまうと,私が書いているのは一体何なの?と...続きを読む

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

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

Aベストアンサー

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

Q電卓 パソコン カンマの位置の違い

999円以上の数字を打つときにパソコンと電卓とで不思議に思うことがあります。

例えば「1000」と表記する時に
千の位と百の位の間の下に「,(コンマ)」を入れて
「1,000」とするようですが
なぜ電卓では上にコンマを入れるのでしょうか?
(私が保有している電卓だけなのか?)

電卓では
区切り点と小数点を見やすくするためですか?
しかしもしそうなら
なぜ電卓だけで、普段のパソコンなどでの書式は
区切り点と小数点も下に点をつけるのでしょうか?

 何かわかる方よろしくお願いします。

Aベストアンサー

> なぜ電卓では上にコンマを入れるのでしょうか?

・日本(アメリカ、イギリス)では、3桁ごとの区切りは「,」カンマ、小数点は「.」ピリオドが使われています。
ところが、ヨーロッパ圏を主体に、日本とは逆の3桁ごとの区切りは「.」ピリオド、小数点は「,」カンマが広く使われています。

近年、インターネットオークションなどで、桁取りや少数点でトラブルが多発するようになりました。
そこで、2003年10月17日にフランスのパリで行われた国際度量衡(どりょうこう)総会(CGPM)で、小数点を統一するための会議が行われました。

この国際会議で決定されたのが、なんと、なんと、、、
・「小数点は、ピリオドまたはコンマのどちらでもOK」と決められました。
・その代わり「3桁ごとの位取りはスペースを用いる、または、無し」となりました。

例: 123 456 789.012(ピリオド) または 123 456 789,012(コンマ) と定められました。


第22回国際度量衡総会決議(PDF)
http://www.intermet.jp/metric/22ndCGPM.pdf
原文
http://www1.bipm.org/jsp/en/ViewCGPMResolution.jsp?CGPM=22&RES=10

=ご質問に係わる要約=(上記PDFの7ページ)
2003年、第22回国際度量衡総会において、小数点は「小数点は、ピリオドかコンマのどちらかとする」と決められました。
3桁区切りは、3桁ごとに空白を入れて読みやすくするのは構わない。
しかし、混乱を避けるため3桁区切りに「コンマやピリオド」を使ってはならないと規定されています。

そこで、2003年以降の電卓では、従来の位置に3桁区切り「コンマ」を使うことが出来なくなったため、電卓メーカーは、苦肉の策としてzxdaeg様のご質問の通り、上部に印(マーク)を付けています。

添付写真の通り、古い電卓では、従来の位置に3桁区切り記号があります。

> なぜ電卓では上にコンマを入れるのでしょうか?

・日本(アメリカ、イギリス)では、3桁ごとの区切りは「,」カンマ、小数点は「.」ピリオドが使われています。
ところが、ヨーロッパ圏を主体に、日本とは逆の3桁ごとの区切りは「.」ピリオド、小数点は「,」カンマが広く使われています。

近年、インターネットオークションなどで、桁取りや少数点でトラブルが多発するようになりました。
そこで、2003年10月17日にフランスのパリで行われた国際度量衡(どりょうこう)総会(CGPM)で...続きを読む

Q$str=mb_ereg_replace('goo','グッド',$str);

によって
$strの中の'good'を'グッド'に変更したいのですが
'good'は大文字と小文字を区別しないようにしたいのですがどうしたらいいでしょうか?
例えば
'goOd'も'グッド'にしたいのです。
PHPマニュアルには詳しい使い方が載っていないので困っています。

Aベストアンサー

大文字小文字を無視するなら
mb_eregi_replace
では?

参考URL:http://jp2.php.net/manual/ja/function.mb-eregi-replace.php

Q英文中のカンマの使い方について

英文の中で、so の前のカンマが有るのと無いのがありますが、なぜですか?違いは何ですか?

全般的に、カンマの打ち方、法則みたいのがあれば教えてください。

宜しくお願いします。

一応自分でも調べてみたのですが、難しい説明でしたので、・・・簡単に解説していただければ幸いです。

Aベストアンサー

「だから」のような意味の時はコンマを使うことがあります。しかし、法則という程のものはありません。so が very のような「とても」という意味になる時はコンマは使いません。very good, so good 、どちらもコンマは使いません。

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",which"と"which"の違いとは

関係代名詞の”,Which”とカンマのないWhichの違いとは何なんでしょうか。よく理解できていないので、教えてください。お願いします。

Aベストアンサー

(1)which:限定(制限)用法
(2), which:非制限用法
と呼びます。

前者は、一般に先行詞を「限定」するために、後者は先行詞に「追加情報」を与えるために用います。

よく使う例ですが
(1)Tom has three pens which look very expensive.
(2)Tom has three pens, which look very expensive.

(1)の方では、'pens'のうち、「高そうに見える」ものだけに話の対象を限定しています。

対して(2)の方では、トムの持っている'pens'に対して、それが「高そうに見える」という情報を付け加えています。

その結果生じる明確な違いは、
(1)の場合には、「3本の高そうなペン」以外に、「高そうではないペン」を持っている可能性があります。言い換えれば、(1)の文は「高そうなペン」の話しかしていない(限定している)ため、それ以外についてはわからないのです。

(2)の場合には、「トムは3本のペンを持っている」と言った上で「そのペンは高そうに見える」という情報を追加しているので、トムの持っているペンはその3本以外にはないという含みがあります。

(1)which:限定(制限)用法
(2), which:非制限用法
と呼びます。

前者は、一般に先行詞を「限定」するために、後者は先行詞に「追加情報」を与えるために用います。

よく使う例ですが
(1)Tom has three pens which look very expensive.
(2)Tom has three pens, which look very expensive.

(1)の方では、'pens'のうち、「高そうに見える」ものだけに話の対象を限定しています。

対して(2)の方では、トムの持っている'pens'に対して、それが「高そうに見える」という情報を付け加えています。
...続きを読む

Q$1$2$3 $2が空だったら$1と$3割る。

タイトルどおりです。

$1=100
$2=200
$3=300

これが

$1=100
$2=''
$3=300
と空だったら
($1+$3)/2
と、するにはどうしたら良いですか??

更に

$1=100
$2=''
$3=''
$4=400

と、空が二つ入った場合

$1=100
$2=200
$3=300
$4=400

と、折れ線グラフで表したら綺麗に直線にしたいんですが、どういう計算式、プログラムで出来ますか??

Aベストアンサー

まじめに答えれば「$1」なんて文法的に使えない例をあげられても
答えようがない

たとえば$aと$cだとして、変数名だけ見て$bが省略されているなんて
判断できない。

Qこの問題、どうしてカンマ不要なのか?

次のような英作問題がありました。
二番目の問題で、「but の前には、カンマをつけよ」と模範解答にはありました。
一番目の問題では、「andの前」には、カンマがありません。
これはどうしてなのでしょうか。

■彼女は立ち上がって窓を開けました。(andを用いて)
She stood up and opened the window.

■私はとても疲れていましたが、母を手伝いました。
I was very tired, but helped my mother.

二つとも、前節と後節の主語は同じです。
二つとも、二つの文章を結びつけています。
一見、「違いはないじゃないか」と思いました。

私が考えた2つの文章の違いは、

◇一番目の文章は、立ち上がり→窓をあけるという一連の動作であること。
◇また、一番目の文章の方が、二番目の文章と比べると…まあ、短い。

よって、一番目のandの前には、カンマがつかないのかと思いましたが…。

しかし、自信がもてません。

アドバイスを、お願いいたします。

Aベストアンサー

この問題、どうしてカンマ不要なのか?
次のような英作問題がありました。
二番目の問題で、「but の前には、カンマをつけよ」と模範解答にはありました。
一番目の問題では、「andの前」には、カンマがありません。
これはどうしてなのでしょうか。

andやbutは、等位接続詞と言って、基本は2つの同等なものをつなぎます。
Tom and Mary are married.
名前と名前をつなぎ、同等なものを結んでいます。


■彼女は立ち上がって窓を開けました。(andを用いて)
She stood up and opened the window.
→この場合、upはついていますが、stoodとopenedという動詞を2つ結んでいます。
ここにカンマを入れることは可能ですが、
その場合、彼女が立ち上がり、それからーーと、ひと呼吸あるといいますか、少しそこに時間のずれを感じさせます。
She stoop up, and opened the window.はちょっと特殊な言い方となりますね。

■私はとても疲れていましたが、母を手伝いました。
I was very tired, but helped my mother.
→これはbe動詞と一般動詞という、同じ動詞でも、種類の違うものを結んでいます。
こういう場合、
1.I was [ very tired ] and [ ( I was ) helped ]
2.I [ was very tired ] and [ I ] helped.
という2つの解釈の可能性が生じてしまいます。
ところが、カンマを入れることにより、1ではなく、2だということになるのです。
この場合カンマを入れるべきです。

以上、ご参考になればと思います。

この問題、どうしてカンマ不要なのか?
次のような英作問題がありました。
二番目の問題で、「but の前には、カンマをつけよ」と模範解答にはありました。
一番目の問題では、「andの前」には、カンマがありません。
これはどうしてなのでしょうか。

andやbutは、等位接続詞と言って、基本は2つの同等なものをつなぎます。
Tom and Mary are married.
名前と名前をつなぎ、同等なものを結んでいます。


■彼女は立ち上がって窓を開けました。(andを用いて)
She stood up and opened the window.
→この場合、up...続きを読む

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&Aランキング