呼び出し側 a.php
<?php require_once "b.php"; tdChoose( __FILE__ ,0 , 5); ?> <TABLE> <tr> <td>1</td> <td>1</td> <td>ほげ1</td> <td>ほげ2</td> <td>ほげ3</td> <td>ほげ4</td> </tr> </TABLE></body></html>
呼び出され側 b.php
<?php function tdChoose ( $f, $r, $n ) { $s = ''; $b = strip_tags( @file_get_contents( $f ), '<tr><td>'); if ( preg_match_all("#<tr[^<]+?(.+?)</tr#is", $b, $trs , PREG_SET_ORDER) ) { $tr = $trs[ $r ]; if ( preg_match_all("#<td[^<]+?(.+?)</td#is", $tr[1], $tds , PREG_SET_ORDER) ) { $s .= $tds[ $n ][1] . "\n"; } } echo ( $s ); }
__FILE__ は自分自身を表すのでb.php内で使うとb.phpを読みに行ってしまってダメなのです。
a.phpの__FILE__をb.phpに渡す手段を考えるわけですが、ここでfunctionコールを利用します。
tdChoose には(ファイル名、何行目、何列目)の3つのパラメータを渡すようにしてあります。
あと、a.php に /tr タグがないと正常に動かないので足しました。
b.php側を関数にして インクルードして呼び出すという方法もありますよ。
http://php.net/manual/ja/function.include.php
> a.phpを実行してもb.phpの処理内容が表示されません
もしもご提示のスクリプトがチャンとコピペできているとしたら、単なるミスタイプですね。
> <?php require_once "d.php";?>
b.php じゃなく、d.php になっています。