08/10/12 09:01:37 B7DkksYv
すいませんURLリンク(openlab.ring.gr.jp)で
タグ名とそのタグの属性名を正規表現で抜き出したいのですがうまくいきません
どなたかご教授おねがいします
$file = file_get_contents("URLリンク(openlab.ring.gr.jp)");
preg_match_all("/<dl>.*</dl>/",$file, $ary);
856:845
08/10/12 09:50:14
うぜえ回答者はだまってろ!
わかるかた回答おね
857:nobodyさん
08/10/12 10:20:47
>>855
正規表現で/使う場合はエスケープ
オプションで改行も全て含むやりかたがあるからやってみろ(mだかUだか忘れたけど)
.*を(.*?)にしてみろ、.*は最長マッチだが.*?は最短マッチだ
858:nobodyさん
08/10/12 10:30:37
>>845
なりすましはセッションではなくSSLで使う言葉じゃね。
Session Fixationでググれ。
859:nobodyさん
08/10/12 12:57:38
>>856
俺のチンコなめ回したら教えてやる。
860:nobodyさん
08/10/12 13:30:21
>855
もうDOM使っちまえよ
861:nobodyさん
08/10/12 13:53:51 UTQYH/CT
php.ini の以下の設定のコメントを外してもociドライバが認識されません(phpinfo()で確認)
extension=php_oracle.dll
extension=php_oci8.dll
extension=php_pdo_oci.dll
Oracle Database 10g Express Editionを使用してます。
どうしたら、認識されるのでしょうか?
862:211
08/10/12 13:59:14 fXLt5ZTj
>>861
Oracleのクライアントを入れていないんじゃない?
863:211
08/10/12 14:06:40 fXLt5ZTj
おっと。うっかり想像で書いてしまったぜ。
>>861
エラーログみたらなんか出てるんじゃない?
ロードに失敗しているなら、DLLをロードする時必要なファイルに
パスが通ってないとかそもそも必要なものがインストールされてないとか、、、
URLリンク(www.php.net)
864:nobodyさん
08/10/12 15:12:01 kzFvqNLy
おう、清原やけど、
数字を16進数や2進数にするんわ分かってんけど
文字を16進数や2進数にするんわどうしたらええの?
文字かて2進数にできるんちゃうか?
教えろや。はよしてや。急いでるねん。
865:nobodyさん
08/10/12 15:15:31
asciiコードってこと?
全角だと文字コードによって変わっちゃうんだけど
866:211
08/10/12 15:20:51 fXLt5ZTj
要するに… 「文字」を「数字」にできればいいんだよね。
この変見ればやりたいこと書いてあるんじゃない?
URLリンク(www.php.net)
867:nobodyさん
08/10/12 15:32:26
>>864
急いでるなら、俺のチンチンを今すぐ舐めろ!
868:nobodyさん
08/10/12 16:32:51 ZWInd4bd
変数展開をその場でなく任意の場所で行う
標準的な関数か方法はないでしょうか?
通常の変数展開は
$foo = 'bar';
echo "foo: {$foo}"; // => foo: bar
ですが
$hoge = 'foo: {$foo}'; // ここでは展開しない
$foo = 'bar';
echo func($hoge); // ここで展開する
// または echo func($hoge, array('foo' => $foo)); など
のような形にしたいです。
sprintf()の%sに名前を指定できる感じのものと言えばいいでしょうか。
よろしくお願いします。
869:nobodyさん
08/10/12 16:36:35
そういうときのためにsprintfがあると思うんだが
もしくはeval
870:861
08/10/12 16:56:09
>>863
Oracle Instant Clientを落としてきて、中身をsystem32フォルダに入れたらうまくいきました。
ありがとうございました。たすかりました。
871:nobodyさん
08/10/12 17:14:38
>>869
ありがとうございます。
sprintfは展開する順序が固定なのが少し困るところです。
evalは思いつかなかったので
初心者なりにevalを使って期待する関数をつくってみました。
こういった感じの標準的な関数・方法はないでしょうか?
function interpolate($str, $args) {
extract($args);
return eval('return "' . $str . '";');
}
$hoge = 'foo: {$foo}';
$foo = 'bar';
echo interpolate($hoge, array('foo' => $foo)); // foo: bar
872:868
08/10/12 17:16:11 ZWInd4bd
すみません。>>871は868です。
873:211
08/10/12 17:19:51 fXLt5ZTj
標準的かどうかはよくわからないけど、変数を展開させることに拘らなければ
str_replace かその関係の関数が簡単なんじゃないかな?
echo str_replace(array('$foo'),array('bar'),$hoge);
みたいな。
URLリンク(jp2.php.net)
874:868
08/10/12 18:18:51 ZWInd4bd
>>873
ありがとうございます。
str_replace()やpreg_replace()はすべての引数で配列を指定できるのですね。
1つずつの文字列しか引数に取れないと思い込んでいたので
勉強になりました。
配列の中身の展開("{$baz[0]}"など)が必要にならない限り
これを使っていきたいと思います。
皆さんありがとうございました。
875:nobodyさん
08/10/12 20:15:22
トーシロなんだけど
このページの
URLリンク(www.phppro.jp)
if (isset($_POST["title"]) && $_POST["title"])
って入力確認だけど、なんでissetで事足りるように見えるのに後ろに余計な物付け足してるん?
念のため聞くけど、後ろのは入力されてたらTRUEを返すんだよね?
なんか見苦しくてすまない、回答いただけるとウレシス
876:nobodyさん
08/10/12 20:19:57 qbuV3HNr
ごめんID出し忘れた
877:nobodyさん
08/10/12 20:20:37
>>875
0
878:nobodyさん
08/10/12 20:28:59
つかissetだけでいいわな
879:211
08/10/12 20:29:53 fXLt5ZTj
「入力されてたらTRUE」の認識は正しいと思います。
何でよけいだと思ったのかな。
880:211
08/10/12 20:36:51 fXLt5ZTj
あ。ごめん。俺間違ってる。
875の書き方も、877の事を考慮すると間違ってる。
881:nobodyさん
08/10/12 20:37:46 qbuV3HNr
回答どうもです。
これってissetだけじゃ駄目なんですかね?
882:nobodyさん
08/10/12 20:38:52 qbuV3HNr
あ、そういう事か
0だと入っててもFALSEかなんかになるんですよね
回答どうもです
883:nobodyさん
08/10/12 20:46:54
なんねーよissetは
884:nobodyさん
08/10/12 20:49:37
0だとisset通るけど後方で引っかかる
array()も同じく
885:nobodyさん
08/10/12 21:05:30 cg/RVdaY
WEB系ってある程度きわめると
勉強することなくなるの?
886:nobodyさん
08/10/12 21:08:42
んなわけねーだろ。
887:nobodyさん
08/10/12 21:12:53 cg/RVdaY
URLリンク(wiki.bit-hive.com)
ここに、PHPのCGI版は、実行時に
HTTPヘッダを自動で送信している、って
書いてあるけど、
自分はPHPのモジュール版を使っているのだが、
この場合はHTTPヘッダを自動で送信しているのかな?
それともしていないのかな?
888:211
08/10/12 21:32:59 fXLt5ZTj
使っているのなら自分で確認できませんか?
889:nobodyさん
08/10/13 01:00:05
>>875
そのURLは面倒なので見てないが、変数定義があるかどうかを調べた後にその変数の正当性を調べるのは、
何らおかしい事ではないというかむしろ普通。
PHPはそこら辺いい加減な言語だから別に好きにすりゃいいが、変数が定義されているかどうか分からないケースの場合、
先にisset()で調べた方が、実行速度は上がるケースがある。未定義の変数の参照は遅い。
if (isset($_POST["title"]) && $_POST["title"]) だと、$_POST["title"]が未定義ならその後の処理は実行されない。
if ($_POST["title"]) だと、$_POST["title"]が未定義の時に遅い。まぁマイクロ秒単位の世界だがw
890:nobodyさん
08/10/13 01:02:20
なんで isset($_POST["title"] だけではだめなの?
891:nobodyさん
08/10/13 01:48:34
みんな回答ありがとう
892:211
08/10/13 07:30:16 2R92n/wD
>>890
だめかどうかは知らないけど、
isset($_POST["title"])
と
$_POST["title"]!=""
は意味(結果)が違うからね。
必要に応じて使えばいいと思う。
893:nobodyさん
08/10/13 07:38:41
じゃstrlenにすれば一発でできんじゃん
894:nobodyさん
08/10/13 07:46:42 CGfh2V74
phpファイルで
<html>
<head><title>PHP TEST</title></head>
<body>
<?php
require_once(DB.php);
?>
</body>
</html>
というのを作ってapacheで実行したら
エラーが出ました
Warning: require_once(DB.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\atest.php on line 7
Fatal error: require_once() [function.require]: Failed opening required DB.php (include_path=.;c:\php\includes;c:\smarty\libs) in C:\Program Files\Apache Group\Apache2\htdocs\atest.php on line 7
と書かれていたのでC:\WINDOWS\php.iniの
include_path = .;c:\php\includes;c:\smarty\libs
を確認したのですが違いはなかったようです
どうすればよろしいでしょうか?
895:nobodyさん
08/10/13 07:50:19
PEAR入れれ
896:nobodyさん
08/10/13 08:05:13 CGfh2V74
>>895
え?入ってないってことですか?
入れたはずなんですが
897:nobodyさん
08/10/13 08:07:59
include_pathがそれでいいのか良く見て考えれ。終了。
898:nobodyさん
08/10/13 08:20:52 CGfh2V74
>>895か>>897のどっち?
pearは入れたはず
include_pathはとりあえず言われたのをやったんですけども
pear導入のときから少し変えた
なにを入れたらいいの?
899:211
08/10/13 08:51:11 2R92n/wD
>>898
警告メッセージってコピペですか?
require_once の引数はそれで正しいですか?
900:894
08/10/13 09:13:10 CGfh2V74
レスありがとうございます
コピペです
require_onceの引数ですが
c:\php\pear\DBなので間違いではないと思います
901:211
08/10/13 09:26:59 2R92n/wD
>>900
> コピペです
私の理解では、DBとphpが定数定義されていない限り、
require_once(DB.php);
は
require_once("DB"."php"); つまり require_once("DBphp");
という動きをします。
しかしそうだとすると、894の警告と食い違うので聞きました。
手で打ち直してないですか?
二つめの質問もつまりそういうことです。
もし私の理解が正しくなくて、require_once が DB.php を
開こうとしているなら、DB.phpが include_pathで指定されている
ディレクトリのどこかにあるかどうか確認すればよいと思います。
あるいは、require_onceの引数にパスを含めて指定することも
できると思います。
902:894
08/10/13 10:38:31 CGfh2V74
ありがとうございます
一度帰宅してやってみます
詳しく書いて頂き大変感謝してます
いつもここのスレは丁寧な方が多くて嬉しい限りです
903:nobodyさん
08/10/13 12:24:01
>>892
もしかすると
gettypeでstringの場合とstrlenで1文字以上をチェックすれば完璧じゃね?
または(string)で強制的にstringに置き換えてstrlenでチェック
904:211
08/10/13 12:37:29 2R92n/wD
>>903
>>889 で書かれていることは知らなかったけど、そういうこともあると思う。
自分で isset($_POST["title"]) && $_POST["title"]!="" とか書くときの
isset は Notice が出ないようにするためだな。
905:nobodyさん
08/10/13 12:40:44
>>903
>>893