我正在使用AS3 / PHP(databasecalls)创建一个网站,我想在主页上加载新闻,从mySQL数据库提供。使用AMFPHP获取纯文本没问题。但我正在寻找不同的东西。我知道如何在AS3中加载图像/ YouTube视频,所以我想稍微用这个来增加新闻。有什么方法可以输入像
这样的东西Lorem ipsum dolor sit amet, consectetur adipiscing elit.
[video]AAAAAAAAAAA[/video]
Donec commodo condimentum enim, vitae consectetur felis pharetra a.
它会在我的文本和制作两个TextField之间建立我的YouTube API类的实例吗? AS3没有BBcode库,所以我的第二个猜测是......正则表达式。似乎无法解决这个问题,但是,任何人都想尝试同样的事情并成功吗?
提前致谢。
答案 0 :(得分: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...
}
答案 1 :(得分: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);
}
您还可以通过将assingment作为while条件将相同的代码压缩为更少的行:
var result:Object;
while (result == myPattern.exec(str)) {
trace( "id is: " + result[0] + " at index: " + result.index);
}
这在功能上是等同的,但可能有点难以掌握。
现在你有索引和id,剩下的就是拆分文本并插入视频!