PHPの正規表現によるパターンマッチで、ファイル名から拡張子を取り除いた文字列を取り出す方法です。
|
<?php echo(get_filename("test.txt")); //test echo(get_filename("test.test.txt")); //test.test function get_filename($file) { return preg_replace("/(.+)(\.[^.]+$)/", "$1", $file); } ?> |
パターンマッチ内の1つ目のパーレン「(.+)」で、任意の1文字以上の文字列を表します。
2つ目のパーレン「(\.[^.]+$)」で、文末にある、ドット1文字から始まり、ドット以外の1文字以上の文字列を表しています。
「$1」の部分を「$2」とすることで、2つ目のパーレン(上記の場合「.txt」となります)を取り出すことができます。
ActionScriptからPHPを実行するには、「URLLoader」を使ってPHPファイルにアクセスすることができます。その際に引数を渡すには「URLVariables」でGET、またはPOSTの変数を渡すことができます。
この方法では、アクセスするPHPファイル全体を実行します。
PHPファイル内の任意の関数のみを実行するには、ActionScriptからGET、またはPOSTの変数を経由し、PHPの関数名の文字列を変数で渡して、PHP側で文字列を関数名として評価することで任意の関数を実行できます。
ActionScriptでは、次のように記述します。(ドキュメントクラスに書いています)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
package { import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; import flash.text.TextField; public class Main extends Sprite { public function Main() { var url_variables:URLVariables = new URLVariables(); var url_request:URLRequest = new URLRequest("functions.php"); var loader:URLLoader = new URLLoader(); //PHPリクエストのPOST変数にPHPの関数名を含める url_variables.function_name = "test"; url_request.method = URLRequestMethod.POST; url_request.data = url_variables; //PHPを実行(読み込み) loader.addEventListener(Event.COMPLETE, onComplete); loader.load(url_request); //PHPの実行が完了したとき function onComplete(event:Event):void { //テキストフィールドを作成して、PHP関数の出力を表示 var textfield:TextField = new TextField(); stage.addChild(textfield); textfield.text = event.target.data; } } } } |
PHPファイル「functions.php」にPOST変数で関数名「function_name」を文字列で渡します。PHPファイルの読み込み(実行)が完了したら「onComplete」にて、PHPで出力された文字列「event.target.data」を扱えるようになります。
PHPファイル「functions.php」には、次のように記述します。
|
<?php //POST変数「function_name」の関数が存在したら実行 $function = $_POST['function_name']; if (function_exists($function)) $function(); function test() { //文字列を出力(ActionScriptに渡す) echo "function test"; } ?> |
「$function」にPOST変数の「function_name」を代入して、同名の関数が存在していたら実行します。
PHPから出力された文字列は、そのままActionScriptで受け取ることができます。
ActionScriptでSWFの置かれているパスではなく、実際に表示されているページのパスを取得するにはJavaScript、またはPHPとの連携で可能になります。
Javascriptの場合
ActionScriptからJavascriptの関数を実行する「ExternalInterface」で行えます。
HTML内に、パスの値を返すJavaScriptの関数を加えます。
|
<script type="text/javascript"> function getPath() { return location.href; } </script> |
ActionScriptではJavaScriptの関数を実行して、戻り値を変数に格納します。
|
var path:String = ExternalInterface.call("getPath"); |
PHP(&FlashVars)の場合
PHPでActionScriptに値を渡すには、FlashVarsを利用する方法が簡単です。
PHP内のFLASH埋め込みのコード内に、PHPで動的に取得したパス情報を、FlashVars経由でSWFに渡します。
|
<param name="FlashVars" value="path=<?php echo "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; ?>" /> |
ActionScriptではFlashVarsの値を「loaderInfo.parameters」で取り出します。
|
var param:Object = loaderInfo.parameters; var path:String = param["path"]; |
WordPressのページ機能を使って、投稿記事の情報をXMLに書き出す方法です。
WordPressのページ機能は、主に固定ページを扱うために用意されていますが、表示テンプレートをコントロールすることで、投稿記事のリストを動的にXMLで出力することもできます。
ページのテンプレート変更には、使用しているテーマのフォルダにテンプレートファイルを入れることで、ページ編集画面の「属性」から切り替えが可能になります。
次のコードは最近の記事10件のタイトル、抜粋、リンクをXMLで出力するテンプレートです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<?php /*Template Name: topics XML*/ ?> <?php echo "<?xml version=\"1.0\" encoding=\"".get_option("blog_charset")."\" ?".">"; ?> <topics> <!-- 最近の記事10件をクエリにセット --> <?php query_posts("posts_per_page=10"); ?> <?php while (have_posts()) : the_post(); ?> <topic> <!-- タイトル、抜粋、リンクを出力 --> <title><?php the_title(); ?></title> <excerpt><?php the_excerpt_rss(); ?></excerpt> <url><?php the_permalink(); ?></url> </topic> <?php endwhile; ?> </topics> |
テンプレートの作成で注意する点は、WordPressにテンプレートファイルであることを認識させるために、コードの先頭にコメントで「Template Name」を記述する必要があります。これにより、編集画面で選択が可能になります。テンプレートのファイル名は特に指定はありません。
|
<?php /*Template Name: topics XML*/ ?> |
WordPressの記事をXMLで出力することで、FLASHコンテンツ内で表示したりなど、他のコンテンツとの連携がやりやすくなります。
Codaで制作効率をアップさせる、ちょっとしたプラグインの作成方法です。
プラグインを作成するには専用のツールが必要になります。Panicサイトの Codaデベロッパゾーンで「Coda Plug-in Creator」が配布されているので、こちらをダウンロードします。サンプルプラグインも同時に配布されていて、初めてプラグインを作成する際に参考になります。
「Coda Plug-in Creator」を起動すると新規ウィンドウが開かれます。
今回はシンプルに、選択したテキストに対して<p>、<div>などの任意のタグで囲むだけのプラグインを作成します。実は、サンプルプラグインにも同様のものが含まれていて、それをもとに作成しています。
CodaのプラグインのスクリプトそのものはPHP(またはCocoa)で書かれていて、上記のウィンドウではそれらを管理し、プラグインを構成していきます。
プラグイン編集中のウィンドウです。編集の大まかな流れは以下のようになります。
- コマンドの作成
プラグイン内のコマンドを作成します。作成したコマンドは左ペインに登録されて、右ペインで編集が可能になります。左ペインの「Shortcut」の箇所をクリックしてショートカットを設定することもできます。
- スクリプトの作成、または編集
作成したコマンドを選択すると、「Script」がアクティブになり、スクリプトを作成することができます。すでに作成されていると編集になります。スクリプトファイルはプラグインファイルに内包されます。
- 入力テキスト
入力テキストの扱いを指定します。選択テキストのみ、ドキュメント全体、選択なしなど。
- 出力テキスト
スクリプトを実行した後の、出力テキストの扱いを指定します。選択テキストを置き換え、ドキュメント全体を置き換えなど。
- ポインターの位置
スクリプトを実行した後の、テキストポインターの位置を指定したい場合にチェックします。その場合スクリプト内に記述する「$$IP$$」にポインターが移動します。
作成したスクリプトファイルには、このように記述しています。(<p>で囲む場合)
|
#!/usr/bin/php <?php $fp = fopen('php://stdin', 'r'); echo '<p>'.fgets($fp, 1024).'</p>'; fclose($fp); ?> |
プラグインの作成が完了したら、保存して書き出されるプラグインファイルを「Application Support/Coda/Plug-ins」フォルダに入れます。これでメニューの「Plug-ins」から実行可能になります。