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

くだすれPHP(超初心者用)

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/06/12(月) 14:06:01ID:???
このスレッドは、他のスレッドでは書き込めない超低レベル、 
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 
PHP使いが優しくコメントを返しますが、 
お礼はPHPの布教と初心者の救済をお願いします。 

PHP Home Page 
http://www.php.net/
028642歳2006/08/31(木) 15:01:18ID:???
explode()

については ゲットしました!! わかった〜 うれし〜。というのがあります。
 ありがとうございます。 ゴミと言われてもしかたない。
028742歳2006/08/31(木) 15:04:48ID:???
42なです。 PHP改造しかしたことない。 10日で覚えるを一応読みましたが、まったく役立ってなかったなと。
0288nobodyさん2006/08/31(木) 15:05:18ID:???
>$dataを宣言するにも、それが  /data/200608.dat  に入ってるでしょう
ファイルから読み込んで変数にぶちこむ部分を分かりやすいように改変してるだけでしょうw
0289nobodyさん2006/08/31(木) 15:06:04ID:???
>>285
奇遇だな、俺も知ってるが42歳じゃない
好きだったんだけど苗字かわっちゃった

>>284 >>286
何を言いたいのか理解に苦しむ
とりあえず
> 日付とタイトルだけを抜き出して表示するにはどう書いたらいいんでしょうか?
これはできたってことか?
029042歳>>2712006/08/31(木) 15:08:12ID:???
>>289
 そうです。それはできそうだなと思いましたが…。
 
誰か全部書いてください。 というか、自分でやりたいような気もするが、
ここで挫折したら、全部挫折しそうだ。

 そもそもムリだったんだろうか。
0291nobodyさん2006/08/31(木) 15:10:29ID:???
> 誰か全部書いてください。

それを挫折とは呼ばないのか?w
029242歳>>2712006/08/31(木) 15:11:42ID:???
挫折だが金で解決して、学ぶ予定。
0293nobodyさん2006/08/31(木) 15:12:23ID:???
へぇ〜それが挫折じゃないなんてw
とってもプラス思考なんですね。
0294nobodyさん2006/08/31(木) 15:12:56ID:???
読み込んでなかった。>>293>>292見る前の発言。
029542歳>>2712006/08/31(木) 15:26:02ID:???
>>288 ソウナンデスケド…  がんばって本読みながら今夜もやってみますが。
 気になってたまりません。 このスレが。 仕事手につかん。
0296nobodyさん2006/08/31(木) 15:26:51ID:???
>>290

1) まずdate()から年と月を取得する
2) 該当するファイル(例:dat/200608.dat)が存在するかチェックする
3) あったらfgetcsv()でも使って配列$dataにでもぶち込む
4) $dataをループ処理でもして日付とタイトルを書き出す
5) ループしてる最中に今日の日付にマッチするのがあったら
    他の変数($todayData)にでも格納しておく
6) 格納しておいた今日のデータ($todayData)を書き出す

やりたいことはこういうことか?
一つずつクリアしてゆけ、さもなくば好きなだけ挫折しれ
あとは知らない
029742歳>>2712006/08/31(木) 15:31:46ID:???
>>296
 そういうことです。 意味は完全にわかるけど、書けるだろうか。

 こんな簡単なサンプルプログラムがない。 サンプル命できたもので、基本的にはわかってないなと昨日から実感しとります。
 
 1)の date() から年と月を取得するところから、

 $Month=date(M); とかでいいんでしょうか?
 そういうレベルなんですけど。

 これは私にはムリだと思います。
0298nobodyさん2006/08/31(木) 15:37:16ID:???
>>297
だからそれを一つずつ試しながらクリアしていけばいいじゃん

>これは私にはムリだと思います。
そう思うならあきらめなさい
029942歳>>2712006/08/31(木) 15:38:24ID:???
誰かバイトして
0300nobodyさん2006/08/31(木) 15:51:02ID:ntBbHdNQ
どなたか助けてください。

http://www.cgis.biz/script_web_cart/
ここで配布されているショッピングカートのphpを改造中で、
販売データをcsvに書き出す処理があるのですが、
購入商品の数だけcsvの行が増える仕様になっています。
1度の注文につき、どれだけの数の商品を購入しようが、
1行だけにしたいのです。
(販売商品データはcsvでは必要がないため、書き出さないようにしています)

多分この辺が怪しいと思うのですが...
「data_sell.php」のダウンロードcsvヘッダーの設定のあとの行から

$csv_head = mb_convert_encoding($csv_head,'SJIS','EUC-JP');
echo $csv_head;
for($i = 0; $i < count($log_all); $i++){
$log_array = split(",",$log_all[$i]);
for($j = 0; $j < count($log_all_i); $j++){
$log_i_array = split(",",$log_all_i[$j]);
if($log_array[0] == $log_i_array[0]){
$log_all[$i] = rtrim($log_all[$i]);
$log = $log_all[$i] . $log_all_i[$j];
$log = mb_convert_encoding($log,'SJIS','EUC-JP');
echo $log;
}

このどれかをいじればいいのじゃないかと思っているのですがどうでしょうか。
そんな単純じゃないだろうとは思うのですが、誰かお願いします。
030142歳>>2712006/08/31(木) 16:10:34ID:???
たぶんこれではわからないのではないでしょうか?
私だったらCSVデータをアクセスかなんかで引っ張って加工したらいいんじゃないかと思うんですけど。
エクセルでもいいけど。

ごめん。超初心者が何を言う。
0302nobodyさん2006/08/31(木) 16:17:38ID:ikYjbt78
初心者です。
PHPをインストールしてapacheを起動するとエラーになってしまいます。
Cannot load C:/php/sapi/php4apache2.dll into server: \x8ew\x92\xe8
\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81[\x83\x8b\x82\xaa
\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B

C:/php/sapi/の下にphp4apache2.dll はあるんですがなんででしょうか?

ちなみに windowsXP apache2.2.3 PHP4.4.4 です。

すいませんが、わかる方おしえてください。
0303nobodyさん2006/08/31(木) 16:36:05ID:???
>>299
このスレで質問してる部分だけでいいならアルバイトって形で代行しても良いですよ^ω^
というか金ないのでやりたいですw
030442歳>>2712006/08/31(木) 16:44:10ID:???
>>303
 お願いします。 メールください。
0305nobodyさん2006/08/31(木) 16:44:15ID:ikYjbt78
>>302 です。
すいません。解決しました。
PHP5 に変更して、apache2.2 用のDLLをダウンロードして解決しました。
apache2.2 用のDLLをダウンロードしていれないとだめみたいです。
1日、なーんにもできなかった・・・・
030642歳>>2712006/08/31(木) 16:49:14ID:???
>>305 辛いですよね…。私なんか夜が夜でないですよ。最近…。でも、それを楽しむ人間性が必要なのだと。
0307nobodyさん2006/08/31(木) 17:30:49ID:???
こりゃこりゃ、そんなへたな釣りでアドレス収集してんじゃないよw
0308nobodyさん2006/08/31(木) 17:54:39ID:???
>>301
お前、一回氏んだほうがいいんじゃない?
030942歳>>2712006/08/31(木) 18:05:23ID:???
>>301
 そうなの??
031042歳 >>2712006/08/31(木) 18:20:05ID:???
メールは来ないの? 自分でやるのか…。
0311nobodyさん2006/08/31(木) 20:07:16ID:???
>>310
これ以上ログ流すのやめてもらえませんか?^^
それとこれだけいろんな人が教えてくれたのに「自分でやるのか…。」は失礼だと思いますよ
0312nobodyさん2006/08/31(木) 20:49:23ID:???
どーみても釣り。そのアドレスの主に嫌がらせしたいんだろ。主に通報するよう言っておくから、おうちで警察くるの待ってなさい。
0313nobodyさん2006/08/31(木) 22:17:43ID:???
>>287
PHP改造とは勇気ありますな。
0314nobodyさん2006/08/31(木) 22:19:00ID:???
警察出てきたらいなくなったw
031542歳 >>2712006/08/31(木) 22:34:27ID:Z0sApiUa
お陰様でよい出会いがありました。これから幸せに暮らします。 さようなら。
0316nobodyさん2006/08/31(木) 23:59:03ID:???
>>272
金払気うならPHPプロ!で質問すればいいと思う。
031742歳2006/09/01(金) 00:24:57ID:+wXqiG2u
いや そんな大金じゃないから。 でも、とっても親切に教えてもらって、今後の研鑽になりました。
また教えてください。 こちらのログも決してムダにせず、私の血となり肉となります。

 早速今夜も眠れない。
0318nobodyさん2006/09/01(金) 00:58:26ID:???
>317は PHPプロ! を知らないに25zeev
0319nobodyさん2006/09/01(金) 03:17:12ID:???
>>315
慌ててメアド欄を消してももう遅いよwww
お前は警察に逮捕されるだろう。

まあ、しょぼいストーカーか、陰湿な嫌がらせか、とにかくタイーホだねwww
もしタイーホされたくなければ、今すぐ自分の実名を名乗って謝罪しといたほうがいいんじゃない?
0320nobodyさん2006/09/01(金) 03:36:54ID:???
妙に伸びてると思ったら。
どうでもいいからもう42関係のレスやめろよ。
032142歳2006/09/01(金) 14:17:34ID:+wXqiG2u
http://www.phppro.jp/
ですか? 知りませんでした。 これも役立ちそうです。 ありがとうございます。
0322nobodyさん2006/09/05(火) 16:47:55ID:rnjtfRTm?2BP(0)
どなたか>>277お願いできませんか?
0323nobodyさん2006/09/05(火) 18:19:25ID:???
>>322

$myURL=str_replace($_SERVER['DOCUMENT_ROOT'],"http://";.$_SERVER['HTTP_HOST'],$_SERVER['SCRIPT_FILENAME']);

こうゆうこと?
外してるかもしれんし、もっとスマートな道がある気もする
0324nobodyさん2006/09/05(火) 20:56:32ID:???
>>277
define('SCRIPT_URL', (empty($_SERVER['HTTPS']) ? 'http' : 'https').'://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
0325nobodyさん2006/09/06(水) 19:26:47ID:???
PHPでセッションを登録し、別のPHPのファイルにformで移動すると
SESSIONが保持できません。

SELFで自分に戻るとSESSIONの中身は取れているのですが、
何が考えられるでしょうか?

ちなみにSESSIONをセーブして中身をみていたら、
別のページに移動したときに2個目のセッションが作成されていました。


0326nobodyさん2006/09/06(水) 21:10:09ID:???
>>325
対処法:
一度首を吊ってみる
0327nobodyさん2006/09/07(木) 10:28:51ID:fMyB6iZL
PHPで2次元配列で、

for($i = 0 ; $i < 5; $i++){
for($ii = 0 ; $ii < 5; $ii++){
$arr[$i][$ii]=1;
}}
print "$arr[3][3]";

の様な事をしたいのですが、出力される値がArrayしか出なくて困っています。
2次元配列を簡単に組めるにはどうしたらいいのですか?
0328nobodyさん2006/09/07(木) 10:39:34ID:???
>>327
print_r() または var_dump()

少しはマニュアルを検索しろウンコ野郎!!
0329nobodyさん2006/09/07(木) 12:37:25ID:???
>>327
print $arr[3][3];
or
print "{$arr[3][3]}";
0330nobodyさん2006/09/07(木) 13:51:21ID:???
>>327
""で括ってどうするんだ、お前は・・・
0331nobodyさん2006/09/09(土) 02:41:28ID:C6V07CE/
下記の様な配列があるとします。

要素[1]さんの状態は[2]
要素[3]さんの状態は[4]
要素[5]さんの状態は[6]

[配列ary]
array ( [0] => ココカラ [1] => Aさん [2] => 元気 [3] => Bさん [4] => まあまあ [5] => Cさん [6] => 空元気 )

ここからCさんの状態を調べるスクリプトを書いてみたのですが

for( $i=1; $i<5; $i+2)
{
if(strpos($ary[$i], 'Cさん')==false)
{
}
else
{
$j = ++$i;
$status = $ary[$j];
}
}

何故かこうすると動かず、for文の$i+2を$i++に変更すると正常に動きます。
そもそも$i+2という記述はおかしいのでしょうか?教えてください。
0332nobodyさん2006/09/09(土) 03:18:23ID:???
>>331
とりあえず他は知らんけど、 $i+2 は $i+=2とか

名前と状態に等しいものが無いという前提でarray_search()
$j = array_search("Cさん",$ary);
if ($j != false) {
echo $ary[++$j];
}
な感じ
0333nobodyさん2006/09/09(土) 03:53:04ID:???
print "htmlのソース";みたいに全てするのと、必要なところだけ<? phpのプログラム ?>みたいな
感じで記述するのでは負荷等は変わってくるのでしょうか?
0334nobodyさん2006/09/09(土) 03:53:32ID:???
>>331
若干ズレた答えだけど
Array(
  [Aさん] => 元気
  [Bさん] => まあまあ
  [Cさん] => 空元気
)
とか
Array(
  [0] => Array( [name] => Aさん  [status] => 元気 )
  [1] => Array( [name] => Aさん  [status] => そこそこ )
  [2] => Array( [name] => Bさん  [status] => 空元気 )
)
にしたほうがわかりやすいかもしれないね、うん
03353312006/09/09(土) 05:53:34ID:C6V07CE/
>>332

ありがとうございました。
+=2で美味くいきました。

アドバイス頂いてからマニュアル見直してみたんですけど、$i+2だけだと代入しないんですね。
試しに
for( $i=1; $i<7; ($i=$i+2))

こうしてみたところ、これでも期待通りの結果が得られました。
あ、あとarray_serchという関数ありがとうございました。初めて聞く関数だったので今後の参考にします。
#只、今回は状態に同一の値が入る可能性があるので、やめときました。

>>334
そうですね。Array[0]に不必要な値もある事ですし、ちょっと綺麗にしようと思います。

何はともあれ、これで眠れそうです。ありがとうございました。
0336nobodyさん2006/09/09(土) 06:16:44ID:PgI2vPCa
PHPでlat.txt、lon.txtから緯度(lat)、経度(lon)を取り出して、
google mapに反映させたいのですが、

うまくgoogle mapに反映できません。

多分、PHPで読み出したデータをjava script側にうまく
渡せていないと思うのですが、よくわかりません。

すみませんが、ご教授お願いします。
ソースの主要部分を抜き出します。

<?php
$handle = fopen ("lat.txt", "r");
$lat = fgets($handle, 1024);
fclose($handle);

$handle = fopen ("lon.txt", "r");
$lon = fgets($handle, 1024);
fclose($handle);
?>

function onLoad() {
map.setCenter(new GLatLng( $lat , $lon ),4);
marker = new GMarker(new GPoint( $lat , $lon ), markeropts);
}
0337nobodyさん2006/09/09(土) 06:20:58ID:???
>>333
まあ、よっぽど大きなサイズでない限り、どちらの方式でも
無視できる程度の負荷の差しかないと思うけど。

ただ、ソースの見通しの良さとか考えると、前者のほうがオススメ。
0338nobodyさん2006/09/09(土) 07:01:23ID:???
>>336
function onLoad() {
map.setCenter(new GLatLng( <?php echo $lat ?> , <?php echo $lon ?> ),4);
marker = new GMarker(new GPoint( <?php echo $lat ?> , <?php echo $lon ?> ), markeropts);
}

かな
0339nobodyさん2006/09/09(土) 10:38:32ID:/+q9xMfe
何回やってもhttp://localhost/phpinfo.phpをダウンロードしようとする。
アパッチはインストールできたけどPHPがうまくいかない。発狂しそう。
0340nobodyさん2006/09/09(土) 10:43:22ID:???
>>339
AddType application/x-httpd-php .php
0341nobodyさん2006/09/09(土) 10:48:47ID:/+q9xMfe
>>440
それは追加しました。
でも「LoadModule php5_module c:/php/php5apache.dll」を書くと
アパッチが再起動できなくなってしまいます。
バージョンは
PHP-5.1.6
Apache-2.2.3
を使ってるんですが、
これよりも前(といってもPHP5)の解説サイトを見ながら設定しても上手くいかないもんなんでしょうか。
03423392006/09/09(土) 10:51:23ID:???
>>440でなく>>340でした。
あとsage忘れてました、すみません。
寝ずにやってて頭に血が上りつつあるので
耳鼻科行ってクールダウンしてきます。。。
0343nobodyさん2006/09/09(土) 10:52:14ID:???
windowsかな?

apache2.2.x を使っているなら Apache2.0.5x に変える

どうしてもapache2.2.xを使いたいならPHP5.2.xをさがす
0344nobodyさん2006/09/09(土) 11:32:26ID:38GEQ8NE
>>341
php5apache.dllはApache1.3用のdllだ
でPHP5.1.6(Win32)にはApache2.2用のdllは同梱されていない
0345nobodyさん2006/09/09(土) 12:30:55ID:???
>>377
とんです。前者でいこうかと思います。
ありがとうございました。
0346nobodyさん2006/09/09(土) 12:31:56ID:???
>>337でした、すまそです。
03473392006/09/09(土) 13:09:02ID:???
>>343-344
耳鼻科が思いのほか混雑していて返事遅れてしまいました。
原因はまさにそれですね!
Apacheを変えたらできました。
素早い正確な本当にどうもありがとうございました。
0348nobodyさん2006/09/09(土) 18:29:08ID:???
>素早い正確な本当にどうもありがとう

ひどい日本語だな・・・
0349nobodyさん2006/09/09(土) 21:32:07ID:???
PHPじゃなくて正規表現の話題になってしまいますが・・・
A[=aaa]BC[=bbb]DEF[/=bbb]GH[/=aaa]IJK
などと言う文字を
A<span class="aaa">BC<span class="bbb">DEF</span>GH</span>IJK
という風に正規表現で置換したいんですけれども、
$text = eregi_replace('\[(.+?)\]','<span class="\\1">', $text);
としてもうまく出来ません・・・
どうしたらよいでしょうか。よろしくお願いします。
0350nobodyさん2006/09/09(土) 23:33:18ID:???
>>349
pregならわかるんだが。
0351nobodyさん2006/09/09(土) 23:39:20ID:???
何で実行速度的・セキュリティ的にpreg系に劣るereg系正規表現関数を使うヤツが多いんだ?
マニュアルにも書いてあるだろうに。
0352nobodyさん2006/09/10(日) 01:01:26ID:???
pregですか、、、
あらやる面でeregに勝っているようなので、使ってみることにします。
・・・でもうまく動かないorz
0353nobodyさん2006/09/10(日) 05:38:35ID:???
>>349
\[=(.+?)\]
だろ
0354nobodyさん2006/09/10(日) 12:10:48ID:???
=いらなくね?
0355nobodyさん2006/09/10(日) 14:05:09ID:???
下記のスクリプトを実行してもエラーになります・・・readが未定義って
言っているようですが書いてるし原因が分かりません。
ご指摘をお願いしますorz
PHPのバージョンは 5.1.6 です。
<?php
class Hoge
{
  public function __construct( $path = NULL )
  {
    if( !is_null( $path ) )
    {
      read( $path );
    }
    return;
  }
  public function read( $path = NULL )
  {
    /*!
      ファイル読み込み処理を実装する予定。
    */
    return;
  }
}
$hoge = new Hoge( 'test.txt' );
?>
エラー内容
Fatal error: Call to undefined function read() in N:\sample.php on line 8
03563552006/09/10(日) 14:08:22ID:???
「On line8」は投稿用に改行のみの行を消したためずれています。
read( $path );の行がline8です。
03573552006/09/10(日) 14:09:33ID:???
ゴメンなさいずれてなかったorz
0358nobodyさん2006/09/10(日) 14:09:52ID:???
出来ました。迷惑掛けて申し訳ないです。
0359nobodyさん2006/09/10(日) 14:10:34ID:???
あ、上は349です。すいません。
0360nobodyさん2006/09/10(日) 14:34:34ID:???
>>355
$this->
03613552006/09/10(日) 14:40:55ID:???
>>360
ありがとんorz
0362nobodyさん2006/09/10(日) 15:01:09ID:???
しかし355の場合、メソッドごとに$pathを引数にしなくともメンバ変数を作ってそれを使えばいいんじゃないか?
どっちが良いのか、どちらにすべきかは知らないけど。
誰か詳しい人教えてくれ。
03633552006/09/10(日) 18:49:47ID:???
>>362
>メンバ変数を作ってそれを使えばいいんじゃないか?
ファイルパス(メンバ変数)をglobalにする必要がないと思ったので
newもしくはread時に渡すようにしています。
0364nobodyさん2006/09/10(日) 20:35:58ID:???
>>363
ちょっと待て
メンバ変数のことを勘違いしてないか?
03653632006/09/10(日) 22:43:21ID:???
てっきり下記のようにしたら?ってことだと思ったんだけど。。(´・ω・`;
class Hoge
{
  public $filePath;
/*コンストラクタは省略*/
  public function read()
  {
    /*$this->filePathのファイルを読む*/
    return;
  }
}
$hoge = new Hoge();
$hoge->filePath = 'data.txt';
$hoge->read();

メンバ変数=$filePathのことで、パブリックな$filePathにパスをセットして
read()を呼べば引数にパス渡さなくてすむって意味だと思った。。
03663632006/09/10(日) 22:47:54ID:???
>ファイルパス(メンバ変数)をglobalにする必要がないと思ったので
globalじゃない…publicですたorz
0367nobodyさん2006/09/10(日) 23:49:52ID:???
>>366
んじゃprivateにすれば?
・・・というのは置いといて、
コンストラクタで引数で渡してメンバ変数に代入したり
あるいはファイル名登録用のメソッドを作ったりしてもいいよね。

というか355の方法じゃクラスにしてる意味が全く無くない?
03683662006/09/11(月) 00:35:35ID:???
>>367
>んじゃprivateにすれば?
情報の後出しのようでもうしわけありません。
エラーの確認用のHogeクラスでは省略していますが実際使おうとしている
クラスではprivate $filePathを持たせています。
引数無しでread()を呼んだ場合に$this->filePathのファイルを読み直します。

>コンストラクタで引数で渡してメンバ変数に代入したり
コンストラクタのなかでreadまでやるからreadのなかでメンバ変数に
代入するようにしているのですが、、コンストラクタ(ファイルパスのセット)と
read()は分けた方がいいのでしょうか。

>あるいはファイル名登録用のメソッドを作ったりしてもいいよね。
read()とファイルパスのセットを分けた方が良いのであればそうします。
どちらがよいのでしょうか。
0369nobodyさん2006/09/11(月) 15:31:35ID:9vOMCYca
PHPでformlから値を貰うときに$_POSTを使うのは分かるのですが、
$_POST["hoge"]=$_SESSION["mofu"]; みたいに直接代入という
方法ってプログラム上アリですか?無しですか?

この方法で確かにちゃんと動くけど明らかに使い方は間違ってるような
気がする($_POSTはformからのデータを貰う為のものと思っているから)
のです。
なぜこんなことをしたのかと言うと、前画面で入力したデータを
ターゲットのフォームに初めから入れておきたいが、ターゲット画面で
入力エラーを検知した場合は、そのエラーの箇所を空白にし、他の入力
箇所は保持したいのです。
ターゲット画面でsubmitをしたとき、呼び出される画面はターゲット画面で、
入力にエラーが無い場合はHeaderで次画面に飛ばすのです。


分かりにくい表現で恐縮ですが皆様の考えを教えてください。
0370nobodyさん2006/09/11(月) 16:05:42ID:???
普通にアリでしょ
0371nobodyさん2006/09/11(月) 17:08:12ID:???
>>369
$_POSTに代入っていうのは気持ち悪いね
動くんだろうけど確かに使い方は間違ってる
他の変数に代入するんじゃだめなの?
どうせサニタイズするんだったら$_POSTそのまま使うんじゃないし
0372nobodyさん2006/09/11(月) 18:08:47ID:qCpJYXXZ
画像をリソーズにするには、どうすればいいんですか?
$img = file_get_contents('画像のURL.jpg');
echo imagesx($img);
としてもエラーが出てしまいます。
0373nobodyさん2006/09/11(月) 18:30:00ID:???
それはファイル関数。イメージ関数を使う。
0374nobodyさん2006/09/11(月) 21:31:19ID:9vOMCYca
正規表現でカタカナと数字以外の入力を禁止する処理を作りました。
if(ereg("[^0-9ア-ンー0-9]",$_POST["kanaName"])){
echo "全角カタカナと数字以外禁止";
}

しかしこれだとヤ以降(50音順)がカタカナと認識されません。
よい方法があったら御教授願います。
0375nobodyさん2006/09/11(月) 22:12:57ID:???
×御教授願います。
0376nobodyさん2006/09/12(火) 07:22:51ID:???
>>369
設計を根本的に見直そう。
$_POSTで受け取った値は必ずスクリプト内で
別の変数に代入してから計算なりアウトプットなりするクセをつける。

そんで、エラーを検知した場合は、最初の画面に戻して、
どういうエラーがあったのかを表示して再入力させるべき。
もちろんこの時、エラーがなかった項目については値を保持して、
フォームに既に入力されてる状態にしてあげること。
03773742006/09/12(火) 14:25:02ID:FIxGk3KG
>>375
何か問題でも?
教授=プロフェッサーだけじゃなくて知識等を与える事って意味もあるはず
だから知識を与えて欲しいと願うのはダメ?

それはさておき正規表現の問題が解決できません。
ア-ンーとしてあるのにガ等の濁点やァ等の拗音(だっけ)がマッチしたりしてます。
どうやったら解決できるでしょうか?
0378nobodyさん2006/09/12(火) 14:50:15ID:???
>>374,377
自分のレベルが糞より低い位置にあるんだから、バカに徹して頭を垂れているべきだ。
それが世渡りつーものだ。

で、そんなもん正規表現じゃねー!!恥ずかし過ぎ!つか、笑った。

もし、sjisなら片仮名文字は
\x83[\x40-\x96]

バカだから文字コードの事も考えていないよね?
仮名文字を使って正規表現とか言うのだから。
0379nobodyさん2006/09/12(火) 15:07:00ID:???
>>377
マジレスすると「ご教示」が正しい
0380nobodyさん2006/09/12(火) 15:07:49ID:???
> 仮名文字を使って正規表現とか言うのだから。

そこでmb_eregですよ!
03813742006/09/12(火) 15:10:12ID:FIxGk3KG
>>379
なるほど サンクス 今度からそうするよ。
0382nobodyさん2006/09/12(火) 15:19:09ID:???
他のアドバイスはスルーかよ
0383nobodyさん2006/09/12(火) 15:31:11ID:???
>>374のレベルだとご教示では足りんからご教授というのもあながち間違いではない気がする。
03843742006/09/12(火) 15:57:14ID:FIxGk3KG
>>378
実際に組むとき\x83[\x40-\x96]はカタカナだから
if(!(ereg("^\x83[\x40-\x96]",$_POST["kanaName"]))){
   echo "全角カタカナと数字以外禁止";
}
としてみました。
全角カタカナ以外はこれで入力できなくなりました(数字も入らなくなっちゃったけど)

その後mb_eregを使ってみました。
if(!(mb_ereg("^[0-9ア-ンー0-9]",$_POST["kanaName"]))){
   echo "全角カタカナと数字以外禁止";
}
こうすると数字も弾かれないので後者を使うことにしましたがァィゥェォとヴが弾かれるので
if(!(mb_ereg("^[0-9ア-ンーヴァ-ォ0-9]",$_POST["kanaName"]))){
      echo "全角カタカナと数字以外禁止";
}
これでテストした結果、今のところは期待通りになっていると思います。
ありがとうございました。

>>382 手ぇ遅いので試すまで待って・・・
>>383 正解。
03853822006/09/12(火) 16:12:37ID:???
>>384
いや、せかしてしまってすまない、早漏だった
動いておめでとう
■ このスレッドは過去ログ倉庫に格納されています