2011-01-02 12 views
1

私はAS3/PHP(databasecalls)でウェブサイトを作っています。mySQLデータベースからフィードを得て、ホームページにニュースをロードしたいと思います。 AMFPHPでプレーンテキストを取得するには問題ありません。しかし、私は別のものを探しています。私はAS3の中で画像やYouTubeの動画を読み込む方法を知っているので、ちょっとニュースに盛り付けたいと思っています。AS3 BBコードまたは交換技術?

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

私のテキストと2つのTextFieldの間にYouTube APIクラスのインスタンスを作成する方法はありますか? AS3用のBBcodeライブラリはないので、私の2番目の推測は...正規表現でした。でも、誰もが同じことをやりたいと思って成功したのですか?

ありがとうございます。

答えて

1

これは、正規表現のための完璧な仕事です...私はあなたが最適化することができると確信してい基本的な例です。

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

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

あなたはこのように行くの正規表現を使用するには:

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

これは機能的に同等である:

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条件としてassingmentを置くことによって、より少ない行に同じコードを圧縮することができますしかし、把握するのが少し難しくなる可能性があります。

ここでインデックスとIDがあります。残っているのは、テキストを分割して動画を挿入することだけです。

+0

ありがとう、私は両方の答えの組み合わせが必要になるだろうが、私はそれを解決するだろうと確信している! – Nick

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... 
    } 
関連する問題