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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2005/11/27(日) 00:07:12ID:eBvjdczp
PHP全般の質問スレです。
【基本ルール】
・新規質問の方は上げてください。age進行でお願いします。
・質問者は2回目以降、最初のレス番号を名前欄に入れてください。
・回答者は質問者に対して>>(アンカー)をつけてください。
・煽り・荒らしは放置。荒らしに反応した香具師も荒(ry
・解決しなくてもこたえてもらったら礼を。
【質問テンプレ】
・マニュアルを調べたか、google検索したか(調べたキーワード)
・タイトル(禁:教えてください!etc) 例:requireとinclude
・内容 例:requireとincludeはどう違うのですか?
・質問する際には環境も明記。
【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークはそれぞれの該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
・オブジェクト指向については良スレがないから本を買え
・速さについては自分でベンチをとってここに書け(違う環境の人も調べてくれるかも)
【PHP マニュアル】
http://www.php.net/manual/ja/
※マニュアル上部の「search for」から検索を活用すべし(便利)。

過去スレ、関連リンク、FAQ等>>2-10辺り
0589nobodyさん2005/12/20(火) 03:06:25ID:???
phpが最新のバージョンかどうか確かめる関数って無いんですか?
0590nobodyさん2005/12/20(火) 03:31:47ID:???
>>589
今使ってるやつより新しいバージョンのPHPが
リリースされたかどうかなんてどうやって検索するねん。
0591nobodyさん2005/12/20(火) 04:17:56ID:???
>>589
ない。「最新の」って情報がどっかから確実に入手できれば可能。
0592nobodyさん2005/12/20(火) 04:33:40ID:???
>>590 >>591
ってことは信頼できるトコから情報を入手して比較するしかないんですね。
ありがとうございました。
0593nobodyさん2005/12/20(火) 07:38:21ID:???
変数が

・セットされていない
・NULL
・空文字列

の時1を返して
それ以外で0を返す関数ってありませんか?

issetは空文字列の時の処理が異なりました。
0594nobodyさん2005/12/20(火) 07:40:25ID:???
isset($var) or $var === ''
でいいのでは?
0595nobodyさん2005/12/20(火) 09:47:38ID:???
!$var
0596nobodyさん2005/12/20(火) 11:28:53ID:???
$varが0だとそれもtrueになる
0597nobodyさん2005/12/20(火) 11:40:27ID:???
http://www.workspot.jp/tech/php_tips2.html
この辺参照
05985942005/12/20(火) 12:01:11ID:???
ミスった。
! isset($var) or $var === ''
だわな。
ハズカチ
0599nobodyさん2005/12/20(火) 18:00:13ID:???
PHPセッションについて質問です。

携帯用のメールフォームにて入力フォームを複数ページに分けて、
最終ページでメール送信というものを作成しています。
ページ間では各値をセッション変数に保持しているのですが、
過去2回ほど最初の方のページで入力した内容が消えてしまっていることがあります。
(各ページでは必須入力チェックを行っています)

このような現象が確認される場合、どのような原因が考えられますでしょうか。

ちなみに、この現象が起こったキャリアはauです。

PHP Version 4.2.3

session.auto_start Off
session.cache_expire 180
session.cache_limiter nocache
session.cookie_lifetime 0
session.cookie_path /
session.cookie_secure Off
session.gc_maxlifetime 1440
session.gc_probability 1
session.name PHPSESSID
session.save_path /tmp
session.use_cookies On
session.use_trans_sid 1
0600nobodyさん2005/12/20(火) 18:41:02ID:???
session.gc_maxlifetime 1440
0601nobodyさん2005/12/20(火) 18:57:00ID:???
>600
ガベージコレクションで最初の値削除されてしまってるということでしょうか。
な、なるほど。
0602nobodyさん2005/12/20(火) 19:07:56ID:Lk6o0b9n
PHP5.0.4ってどこからDLすればよいのですか?
本家に行ってもPHP5.1.1をDLするよう推奨されてて、PHP5.0.4をDL出来ないようなのですが・・・
どなたかDL出来るサイト等をご存知でしたら教えてください。
0603nobodyさん2005/12/20(火) 19:16:52ID:???
>>602
「Older versions of PHP」に思いっきりあるわけだが
0604nobodyさん2005/12/20(火) 19:45:29ID:???
>599
mixiとマルチポスト乙
0605nobodyさん2005/12/20(火) 19:52:50ID:???
mixiに誘ってください><
0606nobodyさん2005/12/20(火) 20:05:00ID:???
>>603
なぜか見落としてましたorz
0607nobodyさん2005/12/20(火) 23:49:31ID:/3BtbpNS
PHPの記述方法について教えてください。
今触っているプログラムの中で
以下のようなコードがあるのですが
これはどういった意味なのでしょうか?
文脈から判断してif文のような気がしているのですが実際のところなんなのかわかりません。

$stockDiff = (isset($selectRow['STOCK']))? $CSVRow[STOCK] - $selectRow['STOCK']: 0;
0608nobodyさん2005/12/20(火) 23:51:54ID:???
>>607
三項演算子
0609nobodyさん2005/12/20(火) 23:54:46ID:/3BtbpNS
三項演算子!?
ありがとうございます。
グ具ってみます。(^^)
0610nobodyさん2005/12/20(火) 23:54:54ID:???
>>607
if (isset($selectRow['STOCK']))
{
$stockDiff = $CSVRow[STOCK] - $selectRow['STOCK'];
}
else
{
$stockDiff = 0;
}

こんなかんじだ。
0611nobodyさん2005/12/21(水) 00:00:16ID:/3BtbpNS
>>609
ありがとうございます。
そのまま使わせていただきます。
0612nobodyさん2005/12/21(水) 00:13:08ID:???
今ひどい自演を見たw
0613nobodyさん2005/12/21(水) 02:54:53ID:???
アンカーミスにきつい突っ込みだw
0614nobodyさん2005/12/21(水) 11:14:58ID:uiIPgpa3
eAccelerator 0.9.4-rc1を PHP 4.3.11で使用しています。
Apacheを起動すると毎回
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
というエラーがでています。
eaccelerator.soの入っているディレクトリに上記2ファイルがあり、eaccelerator.soのファイルは読まれているようなのですが、そのほかが読まれてないようです。
php.iniで確認したところ、extension_dirは./ EnvironmentのPWDは/uar/local/etc/となっているので
session.soとmysql.soのリンクを張ってみると、今度はmysql関係のファイルが全部読まれてないらしく10KB近くのエラーログができてしまいました。

実際eaccelerator.phpを見てみると正常に稼働しているのですが、どうも気になります。
このエラーは放置してもいいのでしょうか?できれば対処法を教えてください。。

よろしくお願いします。
0615nobodyさん2005/12/21(水) 11:20:44ID:???
>>614
eaccelerator.so は一番最後に読み込む必要があったと思う。
06166142005/12/21(水) 12:01:43ID:???
php.iniの
[eaccelerator]
zend_extension="/usr/local/lib/php/20020429/eaccelerator.so"
eaccelerator.shm_size = "20"
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = "1"...
を1番下に動かしてみましたが、
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
[Wed Dec 21 11:56:50 2005] [notice] Apache/1.3.34 (Unix) AuthMySQL/2.20 PHP/4.3.11 configured -- resuming normal operations
[Wed Dec 21 11:56:50 2005] [notice] Accept mutex: flock (Default: flock)
とでました。。

オプティマイザーはeAcceleratorしか使ってません。
0617nobodyさん2005/12/21(水) 12:16:36ID:???
>>616
OSは何?FreeBSDじゃまいか?
06186142005/12/21(水) 12:23:30ID:uiIPgpa3
そうです。
FreeBSD 4.11を使用しています。
これがいけないんでしょうか?..

ちなみにportsからインストールしています。
0619nobodyさん2005/12/21(水) 12:49:36ID:???
>>618
FreeBSDのportsでPHPをインストールすると、
/usr/local/etc/php/extensions.ini というファイルが作られて、
session.so とか mysql.so なんかはこのファイルで追加される。
そして、Apache起動時は /usr/local/etc/php.ini を読んでから、
extensions.ini が読み込まれる。

つまり、php.ini の最後に eaccelerator.so の設定を書いても
最後に読み込まれるわけではないのよ。

よって、extensions.ini の最後に eaccelerator の設定を書くか、
extension.ini の内容を php.ini に移してファイルを消せばいい。

ただこれだと ports を更新する度に同じ作業が必要になるので、
対応策を思案中・・・
ひょっとして適当なファイル名でeacceleratorの設定だけを書いておくと
extension.ini の後に読み込まれないかなと期待してるんだけど。
06206192005/12/21(水) 13:00:16ID:???
今試したらうまくいったよ。

/usr/local/etc/php/extensions2.ini
ってファイルを作って、そこにeAcceleratorの設定を書いておくと、
php.ini → extensions.ini → extensions2.ini の順番で読み込まれた。
ファイル名のソート順でよかったもよう。
06216142005/12/21(水) 13:07:44ID:???
確かに/usr/local/etc/php/extensions.iniはありました。
一度ここのextensionを直接の場所で指定してエラーになりました。

extension.iniの最後に移してみました。
extension=session.so
extension=mysql.so
[eaccelerator]
〜〜〜〜

でやってみましたが、だめでした。。エラーの内容は変わりません。

>ひょっとして適当なファイル名でeacceleratorの設定だけを書いておくと
>extension.ini の後に読み込まれないかなと期待してるんだけど。
# これなら、phpinfo()のScan this dir for additional .ini filesの欄のフォルダに入れると起動時に読まれるっぽいです。
06226142005/12/21(水) 13:08:55ID:???
すいません、みてませんでした。。

やってみます
06236142005/12/21(水) 13:13:28ID:???
だめでした。。
# additional .ini files parsed
/usr/local/etc/php/extensions.ini, /usr/local/etc/php/zextension.ini

これで、きちんと読まれているようですがエラーの内容は変わりませんでした。。
0624nobodyさん2005/12/21(水) 13:14:48ID:???
わ、わざとリロードしなかったわけじゃないんだからね!
分かったわよっ!別ファイルに書けばいいんでしょっ!......(アリガト)
06256192005/12/21(水) 13:22:09ID:???
うーん。そうか。
力になれなくてすまんな。

ところでeAcceleratorとPHPのバージョンは確認済みだよね?

あまり意味ないかもしれんが、うちのバージョンを書いておくね。

# php -v
PHP 5.0.5 (cli) (built: Nov 25 2005 17:25:57)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v2.0.5, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.3, Copyright (c) 2004-2004 eAccelerator, by eAccelerator
06266142005/12/21(水) 13:27:39ID:???
#うちのはあつかましくエラーと共に表示されました。
#php -v
PHP Warning: Unknown(): Unable to load dynamic library './session.so' - Cannot open "./session.so" in Unknown on line 0
PHP Warning: Unknown(): Unable to load dynamic library './mysql.so' - Cannot open "./mysql.so" in Unknown on line 0
PHP 4.3.11 (cli) (built: Dec 10 2005 06:01:20)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
with eAccelerator v0.9.4-rc1, Copyright (c) 2004-2005 eAccelerator, by eAccelerator

ちなみに同じ環境(4.11と4.10の違い)の0.9.3の方はうまく動いているんです。
0.9.3に戻してやってみて、また報告します
0.9.4はまだバグが多いのかわかりませんが、eaccelerator.phpのCleanを押しても動きません。
0.9.3は正常に動作しますけどね。。
06276192005/12/21(水) 13:32:29ID:???
>>626
> #うちのはあつかましくエラーと共に表示されました。

そりゃそうでしょう。
libraryがロードできてないのはsessionとmysqlだからね。
ところで、sessionとmysql以外のモジュールはちゃんと動作してるの(php -i で確認)?
06281472005/12/21(水) 13:56:56ID:N7x21G0G
すみません
phpの配列について質問があります。

前のページで
<input type="hidden" name="20051218133001" value="1">
のhtmlタグのフォーム(POST)で飛ばし、下の記述で表示させようとしましたがエラーが出てしまいます。

if($_POST['20051218133001']){
print<<<EOM
<table>
<tr>
<td valign="top">$_POST['20051218133001']<td>
</tr>
</table>
EOM;
}

エラーは
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/***/***/***.php on line 5
と出ます。

ifの後の$_POST['20051218133001']は普通に処理しているのですが、
print<<<EOMの中の$_POST['20051218133001']が引っかかっているみたいです。
試しに後者を$_POST[20051218133001]と書くと普通にエラー無く表示されます。
次に前者も$_POST[20051218133001]とするとエラーは出ないのですが
ifの条件分岐に入ってくれません。

どなたかご指導よろしくお願いします。
06291472005/12/21(水) 13:57:27ID:N7x21G0G
ちなみに環境はレンサバ(さくらインターネットスタンダードプラン)
サーバOSはUNIX系OSのFreeBSDを使用しているそうです。
PHP のバージョンは 4.3.10 です。

よろしくお願いします。
06306142005/12/21(水) 13:57:38ID:???
動いています。

それどころか、
session

Session Support => enabled
Registered save handlers => files user eaccelerator

Directive => Local Value => Master Value
session.auto_start => Off => Off
session.bug_compat_42 => Off => Off
session.bug_compat_warn => On => On...

mysql

MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 4.0.26
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /tmp/mysql.sock...

ときちんと動作もしています
0631nobodyさん2005/12/21(水) 14:03:21ID:???
>>628
なんかどっかで見かけたような。。
原因はヒアドキュメントの中でどこからどこまでが変数なのかが
PHPの中の人が判断できなくなっている、つーことだから、
{ } を使って明確にしてあげればよい。
{$_POST['20051218133001']}
06326192005/12/21(水) 14:38:45ID:???
>>630
お手上げです。

eAcceleratorの読み込みをやめて Warning が出てこなくなるなら eAcceleratorの
せいだろうし、そうじゃないなら session.so と mysql.so に問題があるんじゃないかと。
後は error_reporting = E_ALL にしたらもっと詳しいメッセージが出てこないかな?
0633nobodyさん2005/12/21(水) 14:40:00ID:ybikX0hy
movable type3.2をphp化したのですが、
phpのUTF-8を指定するには、どうすればいいですか?
htmlの場合は、
.htaccessに
AddType "text/html; charset=UTF-8" html
ですが、
phpの場合は、
AddType "text/html; charset=UTF-8" php
とするだけで良いのでしょうか?
サーバは、xreaです。
よろしくお願いします。
0634nobodyさん2005/12/21(水) 15:27:38ID:???
>>628
文字列(ヒアドキュメントを含む)の中で配列変数を書くときは
{$変数名['キー']} と書かなきゃいけないことは
マニュアルに明記されてる。
II言語リファレンス 6章「型」 参照のこと。
0635nobodyさん2005/12/21(水) 15:29:50ID:???
>>633
<?php
header("Content-type: text/html; charset=utf-8");
echo "Hello world";
?>
0636nobodyさん2005/12/21(水) 15:31:31ID:???
>>635
それは違うんでねーの。

>>633
とにかくここ嫁。
http://jp2.php.net/manual/ja/ref.mbstring.php
0637nobodyさん2005/12/21(水) 15:35:07ID:???
PHPにてデッドリンクのチェックを判定する際にはどのように判定しているのでしょうか?
タイトルに404などの文字が含まれているとかで判定するなんてことはないですよね。
0638nobodyさん2005/12/21(水) 15:35:47ID:???
Charsetを指定してヘッダーを送信したいんじゃないの?
iniのdefault_charsetがクリアされてなきゃデフォで送信されるけど
0639nobodyさん2005/12/21(水) 15:36:51ID:???
>>637
レスポンスヘッダー見ろよ
0640nobodyさん2005/12/21(水) 15:42:49ID:???
>>639
それはどのように見るのでしょうか?
0641nobodyさん2005/12/21(水) 15:47:06ID:???
>>640
レスポンスヘッダー
でぐぐれば分かるだろ。
0642nobodyさん2005/12/21(水) 15:55:24ID:???


php5なら
get_headers
0643nobodyさん2005/12/21(水) 16:02:51ID:???
>>641
>>642
ありがとうございました。
0644nobodyさん2005/12/21(水) 18:44:32ID:???
まぁまぁ
0645nobodyさん2005/12/21(水) 19:22:32ID:???
指定のフォルダ内にどのような拡張子が存在するのかを調べる場合、
どのような正規表現を書けばよいですか?

index.html
top.htm
frame.htm
top.jpeg
icon.gif
1.css
2.css

例えば↑のファイルがある場合、
↓の結果を返すようにしたいのです。
.html
.htm
.jpeg
.css
0646nobodyさん2005/12/21(水) 19:24:57ID:???
.*(\..*)
0647nobodyさん2005/12/21(水) 19:59:31ID:???
アスタリスクって。
06486142005/12/21(水) 21:34:35ID:???
報告です。
eAccerelator0.9.4-rc1 -> 0.9.3
にしたら正常通り動きました。

いろいろありがとうございました。
06496192005/12/21(水) 22:54:58ID:???
>>648
そか。良かった。
おつかれさん。ノシ
0650nobodyさん2005/12/22(木) 01:56:27ID:???
>>645
while($file = readdir($dp)) {
if(preg_match('/(\.[^.]+)$/', $file, $match)) $list[$match[1]] = '';
}
$extlist = array_keys($list);
0651nobodyさん2005/12/22(木) 08:20:36ID:???
>>645
正規表現使わなくても
$parts = pathinfo($file);
$ext = ".".$parts['extension'];

$pos = strrpos($file, ".");
$ext = ".".substr($file, -$pos);
0652nobodyさん2005/12/22(木) 09:12:08ID:???
>>651
下のやつは
$ext = strrchr($file, ".");
だと一発だね。
0653nobodyさん2005/12/22(木) 10:01:11ID:???
ファイル一覧をどう拾ってくるかにもよるけど、
「.」とか「..」とかのディレクトリ名を除外した方がいいかも。
あと、Windowsユーザには馴染みがないかもしれないが、
「.htaccess」みたいにファイル名が「.」から始まる場合は
普通はこれは拡張子とは言わない。

頭1文字目が「.」なファイル名を最初に除外しとくと
この辺が一発で解決するな。
06546282005/12/22(木) 10:08:50ID:ua9mUh2b
>>631
>>634

解決しました。どうもありがとうございました〜。
0655nobodyさん2005/12/22(木) 12:23:30ID:???
ぬるぬるぽっぽ
0656nobodyさん2005/12/22(木) 14:05:22ID:lB13zr56
webalizer以上の機能のアクセス解析作ろうと思ったら
おまえらならどれくらい時間必要?
0657nobodyさん2005/12/22(木) 14:17:50ID:???
>>656
webalizer以上の機能 つーのが何を指してるのか分からん。
0658nobodyさん2005/12/22(木) 14:23:55ID:???
萌え系のアクセス解析とかあったら
面白いけど、これはデザインの問題か
0659nobodyさん2005/12/22(木) 14:33:57ID:???
背景にでじこのエロ絵でも表示しておけ。
0660nobodyさん2005/12/22(木) 14:57:25ID:???
>>656
データマイニングとかやろうとしたら恐ろしい時間が。

>>658
萌え系って機能的には他のより劣ってるよな。

>>659
でじこは萌えない。
0661nobodyさん2005/12/22(木) 15:03:10ID:???
>>660
朝倉音夢
0662nobodyさん2005/12/22(木) 15:30:25ID:???
>萌え系のアクセス解析とかあったら

世界的に需要はあるだろうな。
ただゲームと同じで、日本では萌え=漫画、エロからはみ出せないから、
韓国人が先にやりそう
0663nobodyさん2005/12/22(木) 15:59:47ID:???
<ヽ`∀´>萌え業界はウリが完全征服するニダ
0664nobodyさん2005/12/22(木) 18:53:21ID:8W5z4hv+
C言語のatexitの様に、終了すると実行される関数を用意することは出来ますか?
ignore_user_abort(0) で終了されたときに、実行したい処理があるんです。
0665nobodyさん2005/12/22(木) 19:00:27ID:???
>>664
C言語に詳しくないのだけど、デストラクタのこと?

つ ttp://www.php.net/manual/ja/language.oop5.decon.php
0666nobodyさん2005/12/22(木) 19:01:34ID:???
register_shutdown_function
0667nobodyさん2005/12/22(木) 19:04:59ID:???
おお、はじめてみた。
面白そうな関数だな。
06686642005/12/22(木) 19:16:33ID:???
有り難う御座います!
解決しそうです。
0669nobodyさん2005/12/22(木) 19:34:14ID:???
質問です。

<html>
<?php
if ( ) {
echo "テスト1<br>";
} else {
echo "テスト2<br>";
exit;
}
echo "テスト3<br>";
?>
</html>

上記のような場合 if が真のときは期待通りの出力をしてくれるのですが、
偽のときは exit; 以降が出力されません。(当たり前だと思いますが)
<?php ?> から抜け出し、</html>まで出力させるにはどうすれば良いでしょうか?

Googleなどで検索しまくったけど分かりませんでした。お願いします。
0670nobodyさん2005/12/22(木) 19:37:10ID:???
exitを無くす
06716692005/12/22(木) 19:49:24ID:fg4VrG6a
>>670
exit; なくしたらテスト3も出力されますよね?
関数のように return; でも駄目だろうし(元々用途が違うと思うけど)


真の時
<html>
テスト1<br>テスト3<br>
</html>

偽の時
<html>
テスト2<br>


これを</html>(正確には ?> 以降)まで出力させるにはどうすれば。
0672nobodyさん2005/12/22(木) 19:57:44ID:???
>>671
テスト3が if()条件に左右されるものなら、
テスト1と同じ if() { } の中に含めるか、
テスト3の部分で 再度if() すればいいのでは?
0673nobodyさん2005/12/22(木) 19:59:08ID:???
>>671
<html>
<?php
if ( ) {
echo "テスト1<br>";
echo "テスト3<br>";
} else {
echo "テスト2<br>";
exit;
}
?>
</html>
0674nobodyさん2005/12/22(木) 19:59:17ID:wNhRz1jC
テスト3を真の方で処理
0675nobodyさん2005/12/22(木) 19:59:31ID:lB13zr56
$var = "私の苗字は山田、名前は太郎です\n私の苗字は山田、名前は次郎です";

ここから山田と太郎や
山田と次郎を抜き取って変数に入れるグッドなアイデア(または関数)を
教えてください。
0676nobodyさん2005/12/22(木) 19:59:45ID:???
>>673
あ,exit消し忘れ
0677nobodyさん2005/12/22(木) 20:00:21ID:???
>>675
マルチバイト関数
0678nobodyさん2005/12/22(木) 20:13:39ID:???
つmb_ereg系
0679nobodyさん2005/12/22(木) 20:18:13ID:01Hk6ZHq
もしくは性器表現
06806692005/12/22(木) 20:21:23ID:fg4VrG6a
すんません。沢山レスもらいましたが言葉足らずだったようで・・・


実際には条件式が多数にあり、その中のいろんな場所でexit;を使用しています。
主にエラーの時にエラー文を出力して exit; させていまして
フォームに入力されたデータが全て正しいとき(テスト3の場所に該当する)
MySQL接続して処理などをしています。


エラー文を function error() {} 等でまとめて処理する方法も考えましたが
error処理の最後で exit; させると結局同じだし・・・
0681nobodyさん2005/12/22(木) 21:04:46ID:???
>>680
出力させないだけで、処理自体は走って良いのなら。
<html>
<?php
if ( ) {
echo "テスト1<br>";
} else {
echo "テスト2<br>";
$ob = ob_start();
}
echo "テスト3<br>";
if($ob) ob_end_clean()
?>
</html>
0682nobodyさん2005/12/22(木) 21:06:21ID:???
>>680
で、処理そのものが走っちゃダメなら。
<html>
<?php
if ( ) {
echo "テスト1<br>";
} else {
echo "テスト2<br>";
$err = 1;
}
if(! $err) {
echo "テスト3<br>";
}
?>
</html>
0683nobodyさん2005/12/23(金) 11:19:05ID:???
>>669
処理部分丸ごと関数にしてreturn;でいいんじゃないか?

<?php
hoge();
function hoge() {
if($error) {
return;
} else {
echo "fubafuba";
}
}
?>
</html>
0684nobodyさん2005/12/23(金) 11:29:20ID:???
>>682のようにフラグ($err)を立てる事が多いんじゃないかねぇ。
PHP5だと 例外をthrowするのがおしゃれらしいけど。
0685nobodyさん2005/12/23(金) 11:45:06ID:???
HTMLにドメインロジックなんかが入ってる時点でおしゃれとかそういう次元じゃなくなってるよ
0686nobodyさん2005/12/23(金) 14:40:52ID:???
だね。HTML出力の中で処理分岐なんてさせんなよ。
主コードとデザインは分けろ。
デザインの中に入れていいロジックはデザイン切り替えのための判定だけだ。
0687nobodyさん2005/12/23(金) 14:45:09ID:???
ま、でも元質問者の意図は、HTML出力は関係なくて、

入力処理1
入力処理2
入力処理3
入力処理4
全ての入力処理がTRUEで実行する処理
入力処理の結果に関わらず実行する処理

という構成をシンプルに書く方法の模索だと思うけどね。
それを下手にHTMLやechoで例を書いたから叩かれる。
0688nobodyさん2005/12/23(金) 16:01:50ID:???
$var = "ab.0 cd.a bb.2 abc0";

$varから「ab.数字」という文字列を取ってくるにはどうすればいいでしょうか?
(この場合、ab.0です)
正規表現で preg_grep("ab.[0-9]", $var);
としたいところですが、.が正規表現として認識されてしまい、
abc0まで取得してしまいますよね?
正規表現にもエスケープとかあるのでしょうか?
0689nobodyさん2005/12/23(金) 16:06:51ID:???
"/ab¥.[0-9]/"でしょ
■ このスレッドは過去ログ倉庫に格納されています