1

AS3 / PHP(databasecalls)でWebサイトを作成していて、mySQLデータベースからフィードされたニュースをホームページにロードしたいと思います。AMFPHPでプレーンテキストを取得するのに問題はありません。しかし、私は何か違うものを探しています。AS3内で画像/YouTubeビデオをロードする方法を知っているので、それでニュースを少し盛り上げたいと思います。次のような入力方法はありますか

Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
[video]AAAAAAAAAAA[/video]
Donec commodo condimentum enim, vitae consectetur felis pharetra a.

YouTube APIクラスのインスタンスをテキストの間に作成し、2つのTextFieldを作成しますか?AS3用のBBcodeライブラリがないので、私の2番目の推測は...正規表現でした。でも、頭を抱えているようには見えませんが、同じことを試して成功した人はいますか?

前もって感謝します。

4

2 に答える 2

1

これは、正規表現に最適な仕事です。

var myPattern:RegExp = /\[video\]([a-zA-Z0-9_-]+)\[\/video\]/g;  

括弧[ ]とスラッシュ/は予約文字であるため、バックスラッシュでエスケープする必要があります。[a-zA-Z0-9_-]有効な YouTube ID に使用できる文字の範囲です。

正規表現を使用するには、次のようにします。

var str:String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. \n[video]AAAAAAAAAAA[/video]\nDonec commodo condimentum enim, vitae consectetur felis pharetra a.";

var result:Object = myPattern.exec(str);
while (result != null) {
    trace( "id is: " + result[0] + " at index: " + result.index);
    result = myPattern.exec(str);
}

割り当てを while 条件として配置することで、同じコードをより少ない行に圧縮することもできます。

var result:Object;
while (result == myPattern.exec(str)) {
    trace( "id is: " + result[0] + " at index: " + result.index);
}

これは機能的には同等ですが、把握するのが少し難しい場合があります。

インデックスと ID を取得したら、あとはテキストを分割してビデオを挿入するだけです。

于 2011-01-03T09:42:22.293 に答える
1

これを String split() メソッドで動作させることができるはずです。セパレーターを定義し、split() メソッドを使用して部分文字列の配列を返します。

これは、最適化できると確信している基本的な例です...

 private var result:String = "Lorem ipsum dolor sit amet, consectetur adipiscing 
 elit [--video--]myexample.com/video_url[--video--] Donec commodo condimentum enim, vitae 
 consectetur felis pharetra a."

 private var separator:String = "[--video--]";

 //Assuming that you're only using one video...
 private function parseString(value:String ):void
 {
      var texts:Array = value.split( separator );

      if( texts.length >= 2 ) //there's a video
          initTextWithVideo( texts );
      else // it's only text
          initText( result );
  } 

  private function initTextWithVideo( value:Array ):void
  {
       var text1:String = value[0];
       var videoURL:String = value[1];
       var text2:String = value[2];
       //etc...
  }
于 2011-01-03T02:17:52.703 に答える