トップページphp
1001コメント346KB

【PHP】質問スレッドpart34【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/03/21(火) 10:19:14ID:???
PHP全般の質問スレです。>>2-10も参照。

【ガイドライン】
質問の前にgoogleやマニュアルを検索してください。
http://www.php.net/manual/ja/
http://php.s3.to/namazu/


◆質問する場合の注意
1. 自分のIDを表示させること。(メール欄には何も記述しないでください)
2. ハードウェア、OSのバージョン等を明記すること。
3. 己の行った操作、変更などを詳しく明記すること。
4. エラーメッセージはそのまま表記すること。
5. 質問者としても態度をわきまえること。


◆質問後の注意
・質問者は必ずIDを表示させてください。
  書き込む場合はメール欄に何も記述しないでください。
・2回目以降は最初に質問した際のレス番号を名前欄に入れてください。
  (逆に回答者は質問者に対して>>(アンカー)をつけて答えてください。)
・解決しなくても回答をもらった場合はお礼を言う。
  (荒らし、煽りは除く)

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)

過去スレ、関連リンク、FAQ等>>2-10辺り
0320nobodyさん2006/04/09(日) 02:46:33ID:???
ファイルの中から特定の部位までを読み込むにはどうすればいいですか?
file_get_contentsのように全て読み込まないで、特定の文字列が来たら終わりというようにしたいのですが。
0321nobodyさん2006/04/09(日) 02:48:06ID:???
>>319
0322nobodyさん2006/04/09(日) 02:51:47ID:???
>>320
fopen→fgetsをwhileして任意の場所で終了
0323nobodyさん2006/04/09(日) 03:12:58ID:???
>>322
fgetsだと標準で改行まで読んでくれますが、
仮に特定の文字列が3文字だった場合などはどうすればいいですか?
その行を取り込んで更に処理するしかないでしょうか?
0324nobodyさん2006/04/09(日) 03:16:04ID:???
>>323
普通なら読むだけ読んで不要なデータを捨てた方が
結果的に処理が速いケースの気がするが、
読み込み自体を防ぎたいという目的(理由が分からんが)なら
freadで1バイトずつ読み込んで該当文字列を探せばいいと思う。
0325nobodyさん2006/04/09(日) 03:28:30ID:XN61lwuX
すいません、ごく初歩的な質問なのですが

$d="2006-04-25";

という形式で保存されているデータがあるとして、この翌月を「5」ではなく「05」求めたい場合、

date("Y-m-d" , strtotime("+1 month",strtotime($d)));

これしか思いつかなかったんですが、もっとスマートな方法はありますか…?
0326nobodyさん2006/04/09(日) 04:47:34ID:???
>>325
date("Y-m-d",strtotime($d ."00:00:00 +1 month"));
細かいところにはあえてこだわらない
05の月部分を求めるなら date("m", だろう。
0327nobodyさん2006/04/09(日) 21:24:55ID:???
SimpleXMLElement Object
(
[0] => hogehoge
)

このようなオブジェクトの0プロパティ(?)にアクセスするにはどうすればいいですか?
$obj->0 としても数字使うなって怒られます。
0328nobodyさん2006/04/09(日) 21:52:21ID:???
$obj->'0'
0329nobodyさん2006/04/09(日) 21:55:38ID:???
>>328
シングルクオーテーションですか?それでやってもエラーになってしまいます。
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting T_STRING or T_VARIABLE or '{' or '$'
0330nobodyさん2006/04/09(日) 22:35:29ID:???
>>329
ワラタ
0331nobodyさん2006/04/10(月) 02:48:26ID:???
>>327
本当にプロパティ名が 0 で値を持つなんていうオブジェクト作れるのか……?
まぁもし本当にあったら俺は get_object_vars 使って中身を配列で取得するな。
0332nobodyさん2006/04/10(月) 03:41:33ID:???
ある変数の文字列と、ある変数の文字列をくっつけたいのですが
どうやればいいですか?
0333nobodyさん2006/04/10(月) 03:57:23ID:???
>>332
$hutari = $pretty . $curecure
0334nobodyさん2006/04/10(月) 04:05:15ID:???
>>331
プロパティ名を数字にすること自体はPHP4でもPHP5でも可能ですよ。
常用してると後で取り返しの付かないことになりそうだけど。
$ちんぽ = array('10cm', '20cm', '30cm');
$中出し = (object)$ちんぽ;
print_r($中出し);
0335nobodyさん2006/04/11(火) 03:56:23ID:???
JpGraph2を使用しているんですが、画像中の日本語の文字コードの設定はできないのでしょうか?
例えばソースや内部エンコードをEUCに統一していたとしても、どうやらSJISでしか出力しないようで。
昔1を使用していた時は問題なくできたのですが、今はPHP5では2しか使えないようで困っています。
0336nobodyさん2006/04/11(火) 05:42:05ID:???
>>335
元のコードはともかくUTF-8に変換して渡すんじゃない?
0337nobodyさん2006/04/11(火) 10:54:39ID:???
となると文字化けを回避する方法はないということですか?
0338nobodyさん2006/04/11(火) 12:04:35ID:???
mb関数でエンコできないの?
0339nobodyさん2006/04/11(火) 13:40:40ID:???
>>338
mb_convert_encodingをかければちゃんと出るみたいなのですが、
全ての箇所にかけるのは手間がかかりますし文字コードの設定で直るならそっちがベターかなと
0340nobodyさん2006/04/11(火) 22:19:23ID:2AXtnnt+
またはob_start()→出力(mb_convert_encoding())などと組み合わせて使うとか。
出力の方は忘れた。
0341nobodyさん2006/04/11(火) 22:20:41ID:2AXtnnt+
あ、出力とエンコード逆か
0342nobodyさん2006/04/12(水) 01:22:51ID:???
>>339
詳しく読んで無いけど、出力バッファリングを使ってみては?
0343nobodyさん2006/04/12(水) 10:30:37ID:p8Vzvn2B
意味不明
0344nobodyさん2006/04/12(水) 18:50:59ID:???
GDでJpegが使えないんですがどこを調べれば
原因がわかるでしょうか?

とりあえず、phpinfoではpngは使えるけどjpegは使えないです
0345nobodyさん2006/04/12(水) 18:51:59ID:???
>>344
環境書き忘れました

Redhat9
php5

です。
0346nobodyさん2006/04/12(水) 18:57:51ID:6+o4oJzb
あげ
0347nobodyさん2006/04/12(水) 19:06:20ID:???
>>344
--with-gdでjpegも全部使えるはずだけどね。
jpeg-6bとかgdの再インストールとか試してみたら?
0348nobodyさん2006/04/12(水) 19:10:08ID:6+o4oJzb
>>347
gd library install
http://www.hizlab.net/app/install/gd.html

とかみながら再インストール試したりしてるんですがダメなんです…
一度消さないとダメですかねぇ。あんまり環境変えたくないんで
なるべく被害すくないのがいいんですけど。

--with-gd

はつけてます…ダメな場合とこかにエラーでたりとかしますでしょうか?
03493442006/04/12(水) 19:13:36ID:6+o4oJzb
gd-1.8.4-11
zlib-1.1.4-8
libjpeg-6b-26

がRPMで入ってるます
0350nobodyさん2006/04/12(水) 19:50:25ID:???
>>349
使えないって具体的にはどういう状態なんだい?
0351nobodyさん2006/04/12(水) 19:56:23ID:???
>>344
http://www.php.net/image
ここに
> jpeg-6b To enable support for jpeg-6b add --with-jpeg-dir=DIR.
って書いてあるけど、この--with-jpeg-dir=DIRってやついれてphpのconfigureからしなおしてみたらどうだろう?
(元のconfigureオプションはphpinfoに出てるから、その通りやればたぶん環境が変になったりはしないでしょう)
それでも解決しないなら俺にはちょっとわからんかも。

つーかjpegが使えないってことはfunction_exists('imagejpeg')とかがfalseになるの?
phpinfoはJPG Supportの欄がなかったりdisabledになってたりするの?
03523442006/04/12(水) 19:58:06ID:6+o4oJzb
>>350-351
>phpinfoはJPG Supportの欄がなかったり
の状態です。欄がないっす

>>351さんの方法を試してみます
0353nobodyさん2006/04/12(水) 20:40:44ID:???
複数行格納されている変数の値を全てファイルに書き込みたい場合どうしたらいいのでしょうか?
たとえば、$_SERVERを書き込もうとして
fputs( $fp, $_SERVER);
のようなことをしたら、最初の一行しか書き込まれませんでした
0354nobodyさん2006/04/12(水) 20:45:15ID:???
>>353
言葉使いが微妙におかしいが
つ「foreach」
0355nobodyさん2006/04/12(水) 21:52:07ID:???
>>354
エスパー乙。俺もそういうことだと思ったから俺もエスパー(゚∀゚)
0356nobodyさん2006/04/12(水) 21:54:51ID:???
php 5.0.4+mbstring
apache 2.0.52を使用しています。

phpはutf8で記述しています。

HTMLのフォーム(euc-jp)からフィールドに""の文字をポストして、
echo mb_detect_encoding($_POST['field']);
とすると、EUC-JP と表示されます。
echo mb_convert_encoding($_POST['field'], "UTF-8", "EUC-JP");
とすると ASCII と表示されます。

echo mb_convert_encoding($_POST['field'], "UTF-8", "SJIS");
としたら UTF-8 と表示されましたが、
echo $_POST['field'];
したところ "鐔?"こんな風に表示されました。

どうしたら 汲ェ表示できるのでしょうか。
ちなみにmb_language( 'Japanese' );を設定しています。
0357nobodyさん2006/04/12(水) 22:06:51ID:???
>>353
fputs( $fp, join("\n", $_SERVER));
0358nobodyさん2006/04/12(水) 22:09:44ID:???
eucjp-winやったらできた
0359nobodyさん2006/04/12(水) 23:17:40ID:???
少し質問させてください。

次のようなテーブルがあり、ブラウザで内容を表示して
該当レコードを削除する処理を行っているのですが、
何故か一致しないレコードまで消えてしまいます。

仕様上、HTML・PHP・DB(PostgreSQL)の文字コードは変更できないため、
Unicodeでクエリを送信することができません。
(HTMLはSJIS、PHPはEUC、DBはUTF-8)
何かいい方法がありましたら、教えて下さい。

 / table /      / ブラウザ /
+---+----+    +--------------------+
| old | new |    |                |
+---+----+    | old | new | del |
| あ | い |    |----+----+-----|
| 龍 | 竜 |    | あ | い | del|
| 國 | 国 |    | 龍 | 竜 | del|
| 齊 | 斉 |    | 國 | 国 | del|
| 邊 | 辺 |    | 齊 | 斉 | del|
+---+----+    | 邊 | 辺 | del|
            +------+---+---------+

※delに張っているリンク
<a href="javascript:del_rec('あ','い')">del</a>
<a href="javascript:del_rec('龍','竜')">del</a>
0360nobodyさん2006/04/12(水) 23:18:24ID:Rd5VnMi6
※JavaScript
function del_rec(old_value,new_value){
var frm=document.forms[0];
if(!confirm("このレコードを削除します。")){ return }
frm.ov.value=old_value; // ┐
frm.nv.value=new_value; // ┴hidden要素に格納
frm.action="del.php";  // レコードを削除するPHP
frm.submit();
}

※PHPでの削除部分(若干省略)
$item=cnv_enc_arr($_POST,ENC_EUC,ENC_SJIS);  // $_POSTをSJISからEUCにエンコード
$item=sp_char_arr($item,ENT_QUOTES,ENC_EUC); // $itemのHTMLエンティティ文字を変

$old_v=$item['old_value'];$new_v=$item['new_value'];

$sql="DELETE FROM table WHERE old=:old and new=:new";
$stmt=$db->prepare($sql);
$stmt->bindParam(":old",$old_v);
$stmt->bindParam(":new",$new_v);
$stmt->execute();

/ 実行結果 /
「old=あ , new=い」のレコードをdelしたところ、
「old=龍 , new=竜」のレコード以外が削除される

表がズレた & ID忘れてましたorz
03613562006/04/12(水) 23:23:08ID:???
メールで送信する際にjis変換するのですが、同じようになってしまいました。
mb_convert_encoding( "" , "JIS", "UTF-8");

メールで梶A汲ネどを送信する場合はどうするのでしょうか。
03623442006/04/12(水) 23:32:27ID:6+o4oJzb
うへぇやっぱダメだー

別鯖で設定してみたらあっさりできたのに、入れたい鯖だけはいってくれないー
JPEGサポートだけだめってどういうことなんだー
0363nobodyさん2006/04/13(木) 00:01:44ID:???
>>361
それはいわゆる機種依存文字だから
使わない方がいいかもしれない。
0364nobodyさん2006/04/13(木) 00:06:30ID:???
>>361
・(有)に変換する
・機種依存文字はあきらめる
・JIS以外で送る

上から順におすすめ
03653612006/04/13(木) 00:10:49ID:???
ありがとん
メールってjisいがいでおくれるの?
03663442006/04/13(木) 00:33:25ID:KnVEm6m2
config.logの

configure:34024: checking for the location of libjpeg

の跡にnot found がでてなければみつかってるはずですよね・・・
あとは何をチェックすればいいんでしょうか・・・
0367nobodyさん2006/04/13(木) 00:42:32ID:???
>>365
送れなくはないが、ちゃんと表示できるかは相手次第。
というか、それを言い出したら汲ニかの機種依存文字自体、送っちゃダメ。
03683442006/04/13(木) 01:44:41ID:KnVEm6m2
phpinfo のGDのバージョンって何のファイルを参考にしたものか
ご存知のかたいませんか?
GDを別にセットアップしても
2.0.28のままで新しくいれたはずの2.0.33にかわらないので・・・
0369nobodyさん2006/04/13(木) 02:38:45ID:???
>>368
2.0.33って2.0.28と同じディレクトリに上書きでインストールしたの?
0370nobodyさん2006/04/13(木) 03:49:08ID:???
<?php require( $_SERVER['DOCUMENT_ROOT'] . "/demo.php" ); ?>
とやると、demo.phpは正しく読み込まれるのですが

<img src="<?php echo $_SERVER['DOCUMENT_ROOT'] . "/img/powered-by.png" ; ?>" title="powered-by.png" alt="powered-by.png" >
だと、ソースを見ると正しく
<img src="/www/img/powered-by.png" title="powered-by.png" alt="powered-by.png" >
に正しく変換されているのですが、絵が出ません
これは何が悪いのでしょうか?


PHPは正しく動いているのでPHPの問題じゃないと思うのですが
ほかにどこで聞けばいいのかわからないのでここで質問させてもらいます
すいませんがわかる方いればよろしくお願いいたします
0371nobodyさん2006/04/13(木) 03:59:35ID:???
>>370
$_SERVER['DOCUMENT_ROOT'] はサーバ上のディスク上のパス
/www なんだろうけど
imgタグに指定するパスはHTTP上のパス例えば
src="http://〜/img/hoge.jpg"
またはドキュメントルートに/imgがあるなら単に
src="/img/hoge.jpg"
でよろし
0372nobodyさん2006/04/13(木) 04:11:09ID:???
>>371
ありがとうございます・・。
単に src=/img/powered-by.png で、できました。

これに4時間近く悩んでました・・・。 orz

なんで、requireする時はフルパスで・・・
うぅーーむ、わからん。y
03733442006/04/13(木) 05:13:08ID:KnVEm6m2
>>369
2.0.28ってのはrh9に最初から入ってたみたいでどこにあるか
よくわからないままに、落としてきた33をコンパイルしていれたので
同じところなのかどうかわからないっす
0374nobodyさん2006/04/13(木) 05:26:46ID:???
>>372
ブラウザというか外から見るときはApacheのドキュメントルートが一番上になるわけ。
だから /wwwの下がブラウザから見るとルートになる。
ブラウザで/varとかして外から見られちゃまずいでしょ。
requireだって相対パスで見れる。例えば/www/demo.phpで読みたいスクリプトも同じとこならなら
require "./demo.php"でOK。ドキュメントルートからの絶対パスで指定すると他のサーバに持っていって
パスが変わると面倒、と言う理由で相対パスを使うことが多いけど。
0375nobodyさん2006/04/13(木) 07:45:44ID:???
>>368
php付属のやつだろ
php***/ext/gd/libgd

libgd.soを使うなら
./configure --with-gd=/usr
0376nobodyさん2006/04/13(木) 08:13:44ID:???
PHPでグローバル変数を定義するときは以下のどれが適切と思いますか?
識者のご意見をお聞かせ下さい。

1.$FOO
2.$_FOO
3.$_foo
0377nobodyさん2006/04/13(木) 08:51:12ID:???
>>376
自分が(他に開発者居るならその人達と相談の上で)分かりやすいのを選べばいい。
俺は1だな。

>>359
テーブルの設計がおかしい。
ID
03783772006/04/13(木) 09:00:18ID:???
>>377を間違えて途中で書き込んでしまった。


>>376
自分が(他に開発者居るならその人達と相談の上で)分かりやすいのを選べばいい。
俺は1だな。

>>359
テーブルの設計がおかしい。
IDをふってそのIDを指定して削除処理を行うべき。
挙動の理由については↓でも見て。
http://www.kanzaki.com/docs/jcode.html
PHPの話しではないが↓とかも参考になるかと。
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match

>>353
fputs($fp, implode("\n", $_SERVER));
要するに$_SERVERの中身を改行で繋いで1行にしてからfputs()って事。

>>354,355
どこがエスパーなのやら。。
0379nobodyさん2006/04/13(木) 10:00:07ID:???
ちと疑問に思ったんだが、
>>353
>たとえば、$_SERVERを書き込もうとして
>fputs( $fp, $_SERVER);
>のようなことをしたら、最初の一行しか書き込まれませんでした

本当に($_SERVER以外も含めた何かの)最初の1行なのか?
試してないが、全く無関係に「Array」だと思うんだが・・・
0380nobodyさん2006/04/13(木) 12:47:19ID:y+t9041B
質問です。

ROOT
├LIBLARY
│├ARRAY
││├_array.php
││└arrayFunction.php
││
│└error_code.php

└WEB
 ├ABOUT
 │└about.php
 │
 └index.php
------------------
●_array.php
include_once '../error_code.php'; //★
include_once 'arrayFunction.php';
●about.php
include_once '../../LIBLARY/_array.php';
●index.php
include_once '../LIBLARY/_array.php';
------------------
ファイルの配置と中身なのですが、★の部分でエラーが出ます。
理由は分かっており、includeしたファイルで更にincludeした場合、
カレントディレクトリ→一回目のincludeファイルのディレクトリ
という順でファイルを探すため、error_code.phpが見つからないからです。
それを承知の上での質問なのですが、
上記と同じ処理をできるだけ簡単に実現するには
どうすればいいでしょうか?
今の環境はWindowsXP、PHP4です。
0381nobodyさん2006/04/13(木) 13:00:02ID:???
>>380
・絶対パスを使う。(よくある方法は「ROOT」にあたる絶対パスを共通のconfigファイル的な部分でdefineしておく)
・php.iniのinclude_pathを利用する。
・どうしても相対的じゃなきゃ嫌な場合はdirname(__FILE__) . '/../error_code.php'のように指定する。
0382nobodyさん2006/04/13(木) 13:01:48ID:???
>>380

俺だったらconfigファイル作ってパスを定数で宣言しておく。

config.php------------------------
define("DOCUMENT_ROOT", "ROOTのパス");
---------------------------------

about.php-------------------------
include_once("../../CONFIG/config.php");
include_once(DOCUMENT_ROOT."'LIBLARY/_array.php');
---------------------------------

index.php-------------------------
include_once("../CONFIG/config.php");
include_once(DOCUMENT_ROOT."LIBLARY/_array.php");
---------------------------------

_array.php-------------------------
include_once(DOCUMENT_ROOT."LIBLARY/error_code.php");
include_once(DOCUMENT_ROOT."LIBLARY/ARRAY/arrayFunction.php");
---------------------------------
03833802006/04/13(木) 13:32:36ID:???
>>381
>>382
絶対パスで実装するのが単純でよさそうですが、
相対パスで実装したいので「dirname(__FILE__)」について調べてみます。
ありがとうございました。
03843802006/04/13(木) 14:00:31ID:???
連続投稿申し訳ありません。
「dirname(__FILE__)」でカレントディレクトリ名が取得できました。
応用して「dirname(dirname(__FILE__))」で親ディレクトリ名を取得し、
error_code.phpをincldeすることで解決しました。
>>381さんの「dirname(__FILE__) . '/../error_code.php'」では
途中の../の部分でエラーが出たので…。
0385nobodyさん2006/04/13(木) 14:18:20ID:???
ヒアドキュメント内で定数を出力するにはどうすればいいですか?
0386nobodyさん2006/04/13(木) 14:38:32ID:???
無理
0387nobodyさん2006/04/13(木) 14:38:42ID:???
>>385
できません!
ヒアドキュメント内に入れたいなら一度変数に代入するしかないです。

↑FAQ追加キボンヌ
0388nobodyさん2006/04/13(木) 14:40:32ID:???
>>385
ヒアドキュメント内で定数は使用できなかったと思う
どうしても定数を使用したいなら、いちど変数に入れなおすか
ヒアドキュメントを辞めて必要な部分だけ
?>
<html>
<?php
echo 定数;
?>
</html>
<?php
って感じでやる方が…
0389nobodyさん2006/04/13(木) 15:32:41ID:???
PHP6 で対応してほしいなぁ。>ヒアドキュメントに定数埋め込み

あと、Perl や Ruby みたいに
文字列のクォートも指定できるようにしてほしい。

print qq|<a href="$link">{$array['index']}</a>|;

みたいに。
0390nobodyさん2006/04/13(木) 15:47:40ID:???
>>380
chdir()を使うという手もあるよ。
chdir()についてはマニュアル読んでね。
0391nobodyさん2006/04/13(木) 18:14:36ID:???
ttp://gi-home.iobb.net/php/check.php
ここはPHPを使っているらしいのですが、
どうやって、ないところはnoneにしてるんですか?
0392nobodyさん2006/04/13(木) 19:04:59ID:KnVEm6m2
GDをDLしてソースからコンパイルしてapache再起動しても
phpinfoででてくるバージョンが
かわらないままなんですが、どこのgdを入れ替えたら
いいんでしょうか?

libgd.so
のバージョンに依存する?
0393nobodyさん2006/04/13(木) 19:36:38ID:PiezBhsD
こんにちわ。PHPを使って$_SERVER['user_agent']を偽装したいのですが、
なかなか上手くいきません。良い方法があればご教授いただけませんでしょうか。
宜しくお願いします
0394nobodyさん2006/04/13(木) 19:43:01ID:???
>>393
こんにちわ。>>4の8.の方法でできる。
0395nobodyさん2006/04/13(木) 19:55:52ID:PiezBhsD
>>394
ご親切にありがとうございます。調べてやってみます♪
03963922006/04/13(木) 21:27:38ID:IrbHDKpJ
だれかー
03973592006/04/13(木) 22:25:17ID:???
>>378
ですよね('A`)
IDがあれば削除しやすいんですが・・・
ひとまず、WHERE句の条件を = から Like に変更したら正常に動きました・・・・・('A`)
なんなんだよいったい・・・・・・・
0398nobodyさん2006/04/13(木) 23:36:07ID:???
>>373
PHPは自分がコンパイル時に指定されたディレクトリ上のライブラリファイルを読み込むから、
同じディレクトリで上ライブラリを書きするか、別のディレクトリを指定してPHPを再コンパイルするか
どっちかしないとそのライブラリは認識できないよ。
0399nobodyさん2006/04/13(木) 23:39:35ID:???
>>378
> >>354,355
> どこがエスパーなのやら。。
すでに>>357で同じ回答が出てるのに…
0400nobodyさん2006/04/14(金) 01:02:21ID:lStBexrZ
検索システムもどきを作成しています。結果表示のソースは↓です。(簡易的にしています)

$keyword ="$_POST[keyword]";
$count=count($fi);
$fi = file("search.txt");
for($i=0;$i<$count;$i++){
$kekka="$fi[$i]";
if($keyword=="$kekka"){ print"$kekka"; }
}
search.txtには
テレビ
パソコン

と入っているとします。form.htmlで「テレビ」と入力した時、検索結果に「テレビ」と
表示して欲しいのですが、何も表示されません。search.txt内が1行の時は表示されます。
search.txtが複数行の場合、どうしたらいいのでしょうか?
0401nobodyさん2006/04/14(金) 01:07:38ID:???
>>400
$kekkaに改行コードがくっついたままだからifで一致しない
0402nobodyさん2006/04/14(金) 01:08:52ID:???
>>400
さらに詳しく説明すると、
マニュアルにも書いてあるが、file()は改行文字も各配列要素に取り込まれる事になる。
なので、
if(テレビ == テレビ(+改行文字)) となり、一致しない。
04034002006/04/14(金) 01:22:47ID:???
>>402
私も改行コードについて気になっていました。
しかし、どうやって改行コード(\n)を取り除いて出力するのかわかりません・・。
0404nobodyさん2006/04/14(金) 01:36:47ID:???
>>403
いや、出力以前に検索ができてないだろ。
ちなみにrtrim()っていう関数がある。
0405nobodyさん2006/04/14(金) 02:56:28ID:???
提示のソースなら順序は
$fi = file("search.txt");
$count=count($fi);
だろ。
0406344,3922006/04/14(金) 04:16:40ID:xKvM6FxT
でけた…

再コンパイルするときって前コンパイルに使ったところでもう一回
./configure
からやっても無駄なのね。
ダウンロードして、解凍しなおしたものでやりなおしたらできますた。
回答してくださった方、ありがとうございました。<m(_)m>


0407nobodyさん2006/04/14(金) 09:58:42ID:nvaHi/Q0
ひとまず>>405が正解だろ。改行なんてあと。
0408nobodyさん2006/04/14(金) 10:02:18ID:???
半角、全角関係なく検索する関数ってないでしょうか?
大文字、小文字関係なく、なら見つけたのですが。
あまりにも全角英数字入力する人が多くて。

一旦変数を半角に変換して、ということも考えましたが、
その他の文字列も含むので行えませんでした。
全てが全角ならまだしも一部だけ半角とかで検索する人がいるんで
やっかいです
0409nobodyさん2006/04/14(金) 10:14:48ID:???
>>407
それは単なる写し間違いだと思ってたから気にもしてなかった。
だって、本物がそれだったら中身1行でも全く出力されてないはずじゃん。
0410nobodyさん2006/04/14(金) 10:17:58ID:???
>>408
全角英数だけ半角変換すればいいじゃない
その他の文字列ってなんだ?
0411nobodyさん2006/04/14(金) 10:32:20ID:???
>>391
$_SERVERの中身を出力してるだけだけど、それの何が分からないのかが分からない。

>>397
お節介だとは思うけど、やはりテーブルの設計(というかDBの設定)からやり直した方がいいよ。急がば回れっていうでしょ。
Likeにしたら正常に動いたってのは偶然の話し。ヒントはUTF-8。
UTF-8とは何なのか理解できてるのかな?
http://e-words.jp/w/UTF-8.html (UTF-8の簡単な説明)
そもそもあえてDBをUTF-8にしてる理由は何なのかが俺には疑問です。きっと理由はあるのでしょうが。

>>400
$fi = array_map('trim', file('search.txt'));
if (in_array($keyword, $fi)) { echo($keyword); }
全く同じ挙動でいいなら2行で書ける。
PHPって何でも関数が用意されてるので、関数リファレンス本を一冊買ってざっと読んでみるといいよ。(trim系の関数も知らないみたいなので)

>>408
>>410に賛成。半角に変換する方法が分からないならmb_convert_kana()を参照。
PHPって本当に楽ちん。
0412nobodyさん2006/04/14(金) 10:59:38ID:???
>>411>>359
別にDBは扱いが容易な文字コードであれば何だっていいと思うんだが
(そのPHPプログラムからしか使わないとは限らないんだしな)
それより気になるのは
>>359
> 仕様上、HTML・PHP・DB(PostgreSQL)の文字コードは変更できないため、
> Unicodeでクエリを送信することができません。
> (HTMLはSJIS、PHPはEUC、DBはUTF-8)
なんでUTF-8でクエリを発行できないのかということだよ。
普通にPOSTデータをUTF-8に変換してクエリを組み立てれば済む話じゃん。
ソースコードがEUCだからってデータがEUCしか扱えないわけじゃあるまいし。
0413nobodyさん2006/04/14(金) 11:06:25ID:???
?xxxx;形式の文字ってなんていうんですか?
またこの形式の文字を他の文字に変換したいのですがどうすればいいですか?

よろしくお願いします。
04144132006/04/14(金) 11:07:18ID:???
>>413
化けちゃいましたが
&#xxxx;形式です。
0415nobodyさん2006/04/14(金) 11:14:57ID:???
>>413
> なんていうんですか?
「数値文字参照」
> この形式の文字を他の文字に変換したい
preg_replace辺りで好きに変換すれば?
04164132006/04/14(金) 11:21:53ID:???
>415
ご回答ありがとうございます。
そういう変換関数はないということですか?
0417nobodyさん2006/04/14(金) 11:23:40ID:???
「そういう変換関数」が何を意味するのか分からん。
preg_replaceはそういう変換関数だと思うが?
04184132006/04/14(金) 11:28:51ID:???
>416
欲しい関数は
"&#x30B7;" → "シ"
というような関数です。
0419ras ◆3TeOwx/x8k 2006/04/14(金) 11:31:55ID:???
>>418の>416は>417の間違いです。
すいません。
■ このスレッドは過去ログ倉庫に格納されています