【PHP】下らねぇ質問はここに書き込みやがれ 29
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/09/17(日) 04:26:39ID:???まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り
◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄に何も記述しないでください)
2. サーバーのOS、WebサーバーとPHPの種類やバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。「エラーが出ます」では絶対分かりません。
5. 質問者としても態度をわきまえること。
6. 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
◆質問後の注意
・質問者は必ずIDを表示させてください。(メール欄に何も記述しないでください。)
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
(逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
(荒らし、煽りは除く。逆に煽られたときも、無闇に反論せずスルーすべし)
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え。理解できないならムリに使うな。
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
0232228
2006/09/21(木) 01:50:09ID:k7zFBu8v>>231で書きましたように、mixiで再現できますので、お試しください。
>>230
Perlを使っているmixiでも再現できたので、PHPのバージョンの問題ではないと思われます。
0233nobodyさん
2006/09/21(木) 01:50:30ID:???0234228
2006/09/21(木) 01:52:15ID:k7zFBu8vたしかにその可能性もありますね。
当方のブラウザはIEの最新版です。
0235nobodyさん
2006/09/21(木) 02:03:59ID:???あー、了解。mixiで再現できた。これはHTMLかブラウザの問題だね。
送信後のデータ受け取りじゃなく、ページの表示の時点で消えてる。
<textarea name=hoge>
<?php echo $hoge ?>
</textarea>
なら多分問題は出ないと思うよ。(最初から前後に改行を含めた書き方)
ところが
<textarea name=hoge><?php echo $hoge ?></textarea>
と書くと、$hogeの最初の改行をブラウザが無視してくれてる。
これってどっちの問題なんだろ…俺も後者の書き方がHTML的には正しいと思ってたんだが。
IEのこのHTML解釈って何かおかしくないか?
0236235
2006/09/21(木) 02:13:46ID:???ってことで<textarea>の直後は必ず改行が正しいことになってるのかも。
余談だが、Firefoxでは
<input type=hidden name=hoge value="
データ
">
みたいな改行を含むhiddenデータは前後の改行が除去されて送信されるw
おかげでmixi(確認/キャンセルのデータ受け渡しをセッションでなくhiddenで行っている)では
先頭1行どころか10行分だろうと先頭の空行が丸ごと無視されるという結果になった。
0237228
2006/09/21(木) 02:14:54ID:k7zFBu8vたしかに前者の書き方ですと、>>231の問題は解決されますね。
ただその代わりに、今度は余計な改行が常に1つ、先頭に発生してしまいます。
(最初から改行を含めてるので当然ですが・・・)
たとえば前者の書き方をしておいて、textarea($hoge)が空の状態でマウスカーソルを置くと、
1行目が空行で、2行目からカーソルが始まってしまいます。
つまり1行目の改行が勝手に付いてしまっている状態ですので、今度はそれを消す手間が出てしまいます。
><textarea name=hoge><?php echo $hoge ?></textarea>
>と書くと、$hogeの最初の改行をブラウザが無視してくれてる。
そうですね。無視したあげく、再POSTの際には無かったことになっています。
>IEのこのHTML解釈って何かおかしくないか?
もしこれがIEだけでの現象だとしたら、
完全にIEの解釈がおかしいですよね。。。
0238228
2006/09/21(木) 02:24:28ID:k7zFBu8vFireFoxでも同じ結果でしたか。。。
でも、
><textarea>の直後は必ず改行が正しいことになってるのかも。
・・・だとしたら、私が>>237で書きましたように、
空のtextareaには必ず先頭に空行が1つ出来てしまうわけで、
かなり気持ち悪いですよねぇ・・・。
0239235
2006/09/21(木) 02:25:24ID:???> たとえば前者の書き方をしておいて、textarea($hoge)が空の状態でマウスカーソルを置くと、
> 1行目が空行で、2行目からカーソルが始まってしまいます。
ごめん。これはうちじゃ再現しない。
<textarea name=hoge>
</textarea>
って状態のHTMLでカーソルが2行目に移動できる、って意味だよね?
Windows IE6、Firefox1.0.4どっちでも再現しなかった。
0240228
2006/09/21(木) 02:32:32ID:k7zFBu8v<textarea name=hoge>
</textarea>
・・・なら問題は無いのですが、mixiのプロフィール変更画面のような使い方をする場合、
実際にはスクリプト内では下記のようになると思います。
echo "
<textarea name=hoge>
$hoge
</textarea>
";
このとき、$hogeに何も入っていないと、出力されたHTMLは
<textarea name=hoge>
</textarea>
となってしまい、空の$hogeの分がぽっかり空行1つになってしまうのです・・・。
(※ちなみにこれはmixiでは再現できません。mixiではプロフを空欄に出来ない仕様なので)
0241nobodyさん
2006/09/21(木) 02:36:40ID:???あー、すまん。
<textarea name=hoge>
$hoge</textarea>
って書き方にしてみてくれ。
0242228
2006/09/21(木) 02:40:15ID:k7zFBu8vあっっ、それで解決しました!!
・・・そうですよね、冷静に考えたら、もし$hogeが空だったときに
<textarea name=hoge>
</textarea>
という形にするには、$hogeの後ろの改行を無くせばいいだけでしたね。。。
頭が混乱しててそんな単純なことにも気がつきませんでした。
>>241さん、ありがとうございます!!
(それはともかく、やっぱりブラウザの解釈はおかしい部分がありますよねぇ…)
0243nobodyさん
2006/09/21(木) 02:43:01ID:???2大ブラウザで同じ解釈するんならスタンダードは<textarea>の次は改行なんだろうさ。
0244228
2006/09/21(木) 02:49:48ID:k7zFBu8vということは、W3Cだか何かで、textareaタグの後には必ず改行を
入れるべし・・・などと定めてるんでしょうか?
もし仮にそうだとしても、
<textarea name=hoge>hoge</textarea>
って書いた場合に、勝手に先頭の改行コードを1つ削除する…という動作の意図がよく分かりませんね。。。
0245nobodyさん
2006/09/21(木) 02:51:10ID:???つ[ttp://www.hyuki.com/diary/dia0402.html#i15_16]
>SGMLでは開始タグの直後、終了タグの直前のline breakは無視しなければならない
0246228
2006/09/21(木) 03:03:59ID:k7zFBu8vそれズバリですね!! ありがとうございます。
しかしそれにしても人間に優しくない規則というか、
あまり直感的じゃない決まり事だなぁ・・・。
特にプログラミングする時は、
<textarea name=hoge>{$body}</textarea>
とかって書きたい時もあるのに。。。
0247nobodyさん
2006/09/21(木) 03:08:52ID:???ttp://www2u.biglobe.ne.jp/~fsasaki/WikiFan/wiki.cgi?WalWikiBugTrack%2f012
>各 Web ブラウザの動作状況
こういうのを見てどうするかは自分で考えればいいかと。
0248nobodyさん
2006/09/21(木) 03:33:22ID:???おお…、まさにこのスレでの今回のやり取りと全く同じことが漏れなくまとめられてるw
でもこの問題、意外と話題にならないよね。
少なくとも過去、このくだ質スレで今回のような話題を見かけた記憶がない。
0249235
2006/09/21(木) 04:04:15ID:???SGML的に
「開始タグの直後、終了タグの直前のline breakは無視しなければならない」
ってのは確かに聞いたことあるけど、実際には改行って全然無視されてなくて、
例えば
hoge<span>
aho
</span>hoge
は
hoge aho hoge
みたいに空白が空いて表示されるよなw
しかも、>>247のレポートでも触れられてるけど
> その結果、興味深いことがわかりました。
> それは、「テキストエリア textera の場合タグの直前の改行は削除されない」という事実です。
という中途半端っぷりだし。
気付かないと結構ひっかかりそうな問題だよなー。
うん、いい勉強になったわ。
0250235
2006/09/21(木) 04:08:00ID:???<textarea name=hoge>
<?php echo $hoge ?>
</textarea>
という最初(>>235)の書き方で多分問題ないんだわ。
>>240みたいに "〜" の中で変数展開の書き方だと
</textarea>の前の改行が問題になっちゃうのな。
0251nobodyさん
2006/09/21(木) 06:21:28ID:yxCjYnZVヘッダー関数は絶対URLで書けとどこかできいたのですが、
この場合でも相対パスは使っちゃいけないのでしょうか?
0252nobodyさん
2006/09/21(木) 06:25:41ID:???Refreshの使用はそもそも、推奨されません。
(W3Cのドキュメントより)
だいたい、それだと、例えば、セキュリティレベルを高にしているIEだと何も表示されないですよ
0254nobodyさん
2006/09/21(木) 12:58:17ID:???うん、意外と重要な情報だと思うけど、滅多に話題に上らないね。
原因は、ブラウザの解釈が徹底してない(というかHTMLの仕様自体が曖昧?)のと、
textarea以外ではその現象が発生しにくい(しない?)から誰も気付かないんだろうね。
0255nobodyさん
2006/09/21(木) 14:15:19ID:???これからもだけど
0256nobodyさん
2006/09/21(木) 14:17:23ID:???それを再度textareaで表示した上で再投稿した場合だからな。
結構気づきにくい問題だよ、これ。
0257nobodyさん
2006/09/21(木) 14:23:49ID:v8Pew90xセッションにフラグ用変数を与えて、フォームのアクションで再帰的に読み込んで
スイッチ文でそれぞれのページにリダイレクトしてるんだが
なんだかまどろっこしい
もっとスマートな方法はないものか。
0258nobodyさん
2006/09/21(木) 14:28:23ID:???それはページ遷移判定のロジックが分からんという話であって
リダイレクトの方法が分からんのとは全然話が違うと思う。
というわけでロジックの話ならコードを実際に見せないと
回答のしようがないと思うぞ。
いったいどんだけへんてこなコード書いてるんだよ。
0259nobodyさん
2006/09/21(木) 15:54:33ID:???例えば、IP+HOST+ブラウザ情報のmd5ハッシュ値を求めて最初の5桁を使うなんてのはどうでしょうか?
自分で言うとc0b52f5db6481563916e30da43495e56で最初の5桁はc0b52になりますが、被る人なんてかなり確率低いですよね?
これよりももっといい方法あるでしょうか?
0260nobodyさん
2006/09/21(木) 16:08:38ID:???絶対被らない を求めるなら
かなり確率低い じゃだめなんじゃ・・・
適当に作って発行したIDを保存して
とかじゃだめなの?
md5の最初5桁くらいなら被りそうだ
0262nobodyさん
2006/09/21(木) 16:15:35ID:???簡単確実な方法は
データを数値で保持しておいて
IDを発行するたびにシーケンシャルに数値を上げていくのが
確実だろうね。
同時にIDを発行した時とかのために排他ロック
は必要だろうけど。
0263nobodyさん
2006/09/21(木) 16:28:39ID:25o/CiRu昨日>>180の質問をしたものです。
呼び出しのサンプルです。
<?php
mail('[email protected]','test','test');
?>
以上です。特に問題があるように思えません。
前にも書きましたが、php.iniには、以下が書いてあり、sendmailを直接telnetで操作すると、きちんとリレーされてきます。(つまりtelnetでならメールが出せる)
sendmail_path /usr/sbin/sendmail -t -i
特に原因が思い当たりません。知恵をお借りしたいです。
0264nobodyさん
2006/09/21(木) 16:29:31ID:25o/CiRumail()やmb_〜をコールすると、そのまま戻ってこないので、エラーも表示されてません。
0265257
2006/09/21(木) 16:58:16ID:???流れ的にはこんな感じ。
0266nobodyさん
2006/09/21(木) 16:59:25ID:yxCjYnZV入力されたデータを書き込む前の加工はどのページで行うのがふさわしいでしょうか?
0267nobodyさん
2006/09/21(木) 17:02:47ID:???おれもメール関数でめちゃくちゃ悩んで1ヶ月ぐらいしてあきらめたときがあった。
そんときの解決策。
to,サブジェクト、本文の他にFromも設定してあげたらうまくいった。
たったそれだけだけど、こんなことで1ヶ月も悩んだ。
ためしてみな。これでもだめなら別の回答者が現れるのをまつ。
0268nobodyさん
2006/09/21(木) 17:09:25ID:???ちと、商品数が増えてきて、しんどくなってきた悪寒
0269nobodyさん
2006/09/21(木) 17:10:45ID:???ttp://www.php.net/manual/ja/function.mail.php
にfromなきゃ駄目って書いてあるな・・
マニュアル嫁
ソース晒せ
ってのを守ればもうちょっと早かったはず
0270nobodyさん
2006/09/21(木) 17:10:47ID:???対処法ありますか??
0271nobodyさん
2006/09/21(木) 17:12:36ID:???0274nobodyさん
2006/09/21(木) 17:39:57ID:25o/CiRuなるほど。早速試してみます。
0275nobodyさん
2006/09/21(木) 17:48:19ID:???MysqlのVARCHAR(10)のDefaultがNOT NULLってあるんですけど、これは
どういうときにNOT NULLを使うのでしょうか?
0276nobodyさん
2006/09/21(木) 17:56:51ID:fiT61BpR$result = mysql_query("SELECT id FROM table1");
while($r = mysql_fetch_array($result)){
echo "$r['id']:";
$result2 = mysql_query("SELECT row1 FROM table2 WHERE id = $r['id']");
while($r2 = mysql_fetch_array($result2))
echo "$r2['row1'] ";
}
と同様のことを、よりスマートに行う方法ありませんか?
table1からは200件程度取り出します。
0277nobodyさん
2006/09/21(木) 17:58:20ID:???0279nobodyさん
2006/09/21(木) 18:41:11ID:???だれかこんなおいらに分かりやすい説明をぷりーず
0281nobodyさん
2006/09/21(木) 18:48:20ID:25o/CiRu残念ながら関係ありませんでした・・・fromなくっても動きました・・・
0282nobodyさん
2006/09/21(木) 18:52:45ID:yxCjYnZVまたはsession_destroy();で破棄するべきでしょうか?
あるサイトでarray()で初期化しろとうたっているページを発見したのですが、
配列でセッション変数を初期化したほうがいいのでしょうか?
ご指摘お願いいたします。
0283282
2006/09/21(木) 19:04:35ID:yxCjYnZV$hoge=セッション変数;←$hogeにセッション変数代入
session_destroy();←ここでセッション破棄
これがエラー(Notice: Undefined index: hoge)として帰ってきてしまいます。
セッションを破棄したことで、$hogeには何も入ってないからでしょうが、
どう記述していいのかわかりません。
0284えがみボンバイエイ
2006/09/21(木) 19:07:17ID:???こういうサイト作り中なのですが、文字化けしてしまいまして、文字コード変換を教えてもらいたいです。
ソースは
<?php
//URL
$url = array("http://yahoo.co.jp","http://www.bb-chat.tv/","http://www.snsnavi.jp/","http://mixi.jp","http://livedoor.jp","http://iki.2ch2.net/");
//$url配列を一個づつ処理
foreach ($url as $value){
//メタタグの内容を取得
$array = get_meta_tags($value);
//メタタグの内容を表示
echo "<p>サイト名(サイトへリンク):"."<a href=".$value.">サイト名</a>";
echo "<p>サイトのサムネイル:<img src=".'http://img.simpleapi.net/small/'.$value." >" ;
echo "<p>はてなブックマーク数:<img src=".'http://b.hatena.ne.jp/entry/image/'.$value." >" ;
echo "<p>サイトの内容:".$array["description"];
echo "<p>サイトのキーワード:".$array["keywords"];
echo "<hr />";
}
?>
で、echo "<p>サイトの内容:".'mb_convert_encoding( $array["'.'description'.'"],"Shift-JIS","auto")' ;
みたいにすればいいのかなと思うのですが、どうもうまくいきません。。。
0286nobodyさん
2006/09/21(木) 19:12:37ID:???autoの判定が怪しくなるんじゃないの?
0287nobodyさん
2006/09/21(木) 20:15:22ID:8hLu55dO0288nobodyさん
2006/09/21(木) 20:19:45ID:???http://www.google.com/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&safe=off&q=get+%2B%22%3D%26%22+php&lr=lang_ja
0289287
2006/09/21(木) 20:20:24ID:yxCjYnZV>>287へ
0290nobodyさん
2006/09/21(木) 21:29:24ID:???ビット演算子
ttp://www.php.net/manual/ja/language.operators.bitwise.php
このページ見てもビットちんぷんかんな俺には分からないけどな
0291nobodyさん
2006/09/21(木) 21:33:52ID:???http://www.php.net/manual/ja/language.references.whatdo.php
0293nobodyさん
2006/09/21(木) 22:24:48ID:yxCjYnZVエラー1067がでて起動できません。
文字コードがsjisだと問題なく起動できるのですが、
eucにするのは無理でしょうか?
0295nobodyさん
2006/09/21(木) 22:39:54ID:???0296nobodyさん
2006/09/21(木) 22:45:48ID:???0297nobodyさん
2006/09/21(木) 23:19:45ID:???0298293
2006/09/21(木) 23:37:31ID:???お騒がせしました。
0299nobodyさん
2006/09/21(木) 23:42:18ID:wtB1wQTqhttp://2ch.net/ → <a href="http://2ch.net/">http://2ch.net/</a>
<a href="http://2ch.net/">http://2ch.net/</a> → <a href="<a href="http://2ch.net/">"><a href="http://2ch.net/"></a>
$str = eregi_replace("([^=\"])http://([a-z0-9\_\-\./~@?=&-\#]+)([^<\"])", "\\1<a href=http://\\2 target=_blank>http://\\2</a>\\3", $str);
$str = eregi_replace("([a-z0-9\_\-\.]+)@([a-z0-9\_\-\.]+)", "<a href=mailto:\\1@\\2>\\1@\\2</a>", $str);
これだと、時々判定漏れで可笑しくなってしまいますorz
0301nobodyさん
2006/09/22(金) 00:38:03ID:???そんな面倒が嫌だから、リンクを作ったりテキストを弄るのは表示直前なんだよ
確実にやりたいならリンクを戻すことから始めりゃいんじゃない。
0302nobodyさん
2006/09/22(金) 01:07:04ID:???真面目にやるならこんな感じ
ttp://www.din.or.jp/~ohzaki/perl.htm#AutoLink
0304nobodyさん
2006/09/22(金) 02:11:15ID:???0305nobodyさん
2006/09/22(金) 02:16:31ID:???さらっとかどうかは知らんけど
echo strtotime(preg_replace('/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/', '\1-\2-\3 \4:\5:\6', $str));
くらいのもんじゃないの?
0306nobodyさん
2006/09/22(金) 02:33:23ID:0rl6NvDWログイン情報としてsession()を、掲示板の名前等を記憶されるためにsetcookie()を
同じスクリプト内で使いたいのですが、上手くいきません。どちらかだけだと大丈夫なのですが、
両方使う場合にはどうしたら良いのでしょうか?
0307nobodyさん
2006/09/22(金) 02:38:27ID:???両方SESSIONじゃダメなの?
ってか掲示板の名前を覚えさせる必要って言うのはあるのかな?
POSTとかで事足りる希ガス
0308nobodyさん
2006/09/22(金) 02:48:57ID:0rl6NvDWすいません、説明が不十分でした。
掲示板の名前っていうのは投稿した際のHNとかのことです。
0309nobodyさん
2006/09/22(金) 02:49:43ID:???サンクス
$yyyy = substr($src_date, 0, 4);//年
$mm = substr($src_date, 4, 2);//月
$dd = substr($src_date, 6, 2);//日
$hh = substr($src_date, 8, 2);//時
$mm = substr($src_date, 10, 2);//分
$ss = substr($src_date, 12, 2);//秒
なんて面倒なことをするとこでした。
0310nobodyさん
2006/09/22(金) 02:56:03ID:X1gmluk1配列である$linesの要素から、正規表現でマッチした配列の要素を削除する
方法が思い浮かびません。これはどうしたら出来るでしょうか?
preg_replace ('/^$/', '', $lines) だと、空文字列 ('') に置換できますが
配列の要素自体を取り除くことはできませんでした。
0311310
2006/09/22(金) 03:01:16ID:X1gmluk1ごめん。
マニュアルのArray見るの忘れてた。これでイケるかな。
0312270
2006/09/22(金) 03:07:31ID:cF1a5TbS普通にそれでググってもなくない??
auの絵文字を実体参照に変えるやりかた
0313nobodyさん
2006/09/22(金) 04:10:46ID:???http://ns1.php.gr.jp/pipermail/php-users/2004-November/024085.html
0314nobodyさん
2006/09/22(金) 06:52:44ID:???foreach(range(0, count($lines) - 1) as $i) {
if(preg_match('/条件/', $lines[$i])) unset($lines[$i]);
}
0316nobodyさん
2006/09/22(金) 09:04:42ID:6cSapPbrPHP Version 4.3.10-16 です。OSはLinuxです (Debian 3.1)
以下のようなスクリプトを実行すると、
echo strtr('abc', 'b', 'B')."\n";
echo strtr('abc', array('b' => 'B'))."\n";
echo "\n";
echo strtr('abc', 'b', '')."\n";
echo strtr('abc', array('b' => ''))."\n";
以下のような結果になるのですが、
aBc
aBc
abc
ac
なぜ、三行目は「ac」にならずに「abc」と表示されるのでしょうか。
説明書を見てもそうなるとは書いてないように読めるのですが。
参考資料などありましたら教えてください。
0317nobodyさん
2006/09/22(金) 09:38:17ID:???0318nobodyさん
2006/09/22(金) 09:45:26ID:???> string strtr ( string str, string from, string to )
> この関数は str を走査し、 from に含まれる文字が見つかると、そのすべてを to の中で対応する文字に置き換え、 その結果を返します。
「対応する文字」だと書いてある。
ちなみにソース上では、fromの長さとtoの長さのMIN、つまり小さいほうをとってそこまでの長さ分しか処理してない。
まあ、toに空文字を指定したらfromに含まれる文字を全部削除、みたいな仕様のほうが便利だろうけどね。
俺の経験上strtrってそんなに使用頻度の高い関数じゃないし、何かperl由来の事情か何かあるんじゃね?
0319nobodyさん
2006/09/22(金) 10:04:52ID:???strtrのもとは、perlのtr演算子、そのもとになってるのはUNIXのtrコマンドだろうけど、
確かに、それらには空文字だから削除するなんて仕様はないからこの動作のほうが自然化。
納得。(Perlだと、tr/b//d としないと削除しない)
アメリカ人が書いたPHPスクリプトに、あたりまえのように
strtr($hoge, array("\n" => "", "\r" => ""))
とか使われていたので、ついうっかりしてしまった。
どうもありがとう。
0320nobodyさん
2006/09/22(金) 10:12:59ID:???どこの誰だw
0321nobodyさん
2006/09/22(金) 10:27:18ID:???,.r " 、 ` 、
/ )、、 \
/ ノ ヽ ヽ、
/ ル' ヾ ヽ
/ / ゙i, ゙i
j ,ィ/ ゙i, |
lィ' ,ィ/j/ | iリ
| /l / '"` | |l
リ! ./,ノ _,、=''''`ヘ ,リ
゙! l/ ,:-ー=‐-ミ、,,_,.ノ /(::ノ-‐)ーV´
ヽ,/`ヽヽ .ト、 (;:ソ-‐)- 、,-トi´ ,ノ
, ヘ ゙iヽl `ヽ,r'´ ノ ヾー--‐''゙i
,,.く ゙i ゙i ヽ、 __,,、-'" 〉 ,!
ハ'´ ゙! ゙i ,! ´ ´ ./.......,,,,,,,,____/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
゙、゙i,__r'゙゙>ー┬-!_j _______ , /;\;;;;;;;;;;;;:;;;;| 私はムスカ大佐だ。
,゙V" ゙ヽ;;;! l ゙!、 ゙ー一'''''"´ /;;;;;;;;ヽ;;;;;;;;< 呼んだかい?
,.:r''";;;;ヽ. - ''^゙~ ゙ヽ,ヽ ,,.、-─‐- .,/;;;;;;;;;;;;;ヽ;;;;;;;;;;|
,.:r'''";;;;;;;/;;r'´ -‐‐'''"´~ヽ\ (.r‐'''""゙"''''y.);;;;;;;;;;;;;;;;〉;;;;;;;\_____________
;;;;;;;;;;;;;;;;;l;;;| _,,..、-‐^ヾ゙ヽ、 _,,ヽ ,/'゙!;;;;;;;;;;;;∠、;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;j;;;;| ,⊥, ゙i :レ' ゙!;;;;;;;;;;;;;;;;|;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;!;;;:;| -‐''"´ ゙)ゝ、、 ! !. !;;;;;;;;;;;;;;;;!;;;;;;;;;;;;;;;;;;;;
0322nobodyさん
2006/09/22(金) 10:35:15ID:???echo strtr('abc', 'b', '')."\n";
echo strtr('abc', array('b' => ''))."\n
の違いがよくわからない私に分かりやすく教えてくれませんか。
0324nobodyさん
2006/09/22(金) 10:53:46ID:???0325nobodyさん
2006/09/22(金) 11:03:32ID:???それに慣れてる人が互換コマンドとして使えばいいものであって、
そうでない人まであえて使う必要はそれほど無いだろう。
でもtrのPHP版での拡張モード(配列で複数ワードを指定し、多重変換は抑止してくれる)は
str_replaceで同じことするのも案外面倒くさくて、結構便利な関数だよ。
0326nobodyさん
2006/09/22(金) 11:09:39ID:???> 説明書を見てもそうなるとは書いてないように読めるのですが。
> 参考資料などありましたら教えてください。
ttp://www.php.net/manual/ja/function.strtr.php
> from と to の長さが異なる場合、長い方の余分な文字は無視されます。
じゃ参考になりませんか。
0327nobodyさん
2006/09/22(金) 11:24:33ID:???str_replaceも配列とって重複避けるモードもあるし、こっちのほうが一般的じゃないか?
PearもZFもこのスレで登場するのもstr_replaceが圧倒的に多数かと思う。
引数のとり方が違うから状況に応じて使い分けりゃいいんだけどね。
0329nobodyさん
2006/09/22(金) 11:38:32ID:???前者は文字単位の指定方法で、この指定では変換対象の文字が無いから無視される。
後者は単語単位の指定方法で、ちゃんと変換単語("")が指定されているから機能する。
そんだけ。
■ このスレッドは過去ログ倉庫に格納されています