【发布时间】:2011-02-19 18:17:22
【问题描述】:
所以我们有http://127.0.0.1:4773/robot10382.flv?action=read,我们需要从中摆脱protocol、ip/adress、端口、实际url(此处为robot10382.flv)和actions(此处为操作=阅读)如何在一个 reg exp 中将所有这些解析为字符串变量?
【问题讨论】:
标签: regex flash actionscript-3 url mxml
所以我们有http://127.0.0.1:4773/robot10382.flv?action=read,我们需要从中摆脱protocol、ip/adress、端口、实际url(此处为robot10382.flv)和actions(此处为操作=阅读)如何在一个 reg exp 中将所有这些解析为字符串变量?
【问题讨论】:
标签: regex flash actionscript-3 url mxml
我很惊讶 AS3 不包含正确的 URL 解析工具。简而言之,使用 RE 安全地解析 URL 并不容易。 Here's an example of doing it though.
【讨论】:
/(\w+)\:\/\/(\d+\.\d+\.\d+\.\d+)\:(\d+)\/(\w+)\?(.+)/ : $1 - 协议,$2 - ip,$3 - 端口,$4 - 实际 url,$5 - 操作
还有另一种方法:
协议:url.split('://')[0]
ip/域名:url.split('://')[1].split(':')[0](或者如果没有指定端口 - url.split('://')[1].split('/)[0]
端口:url.split('://')[1].split(':')[1].split('/')[0]
实际网址:url.split('?')[0].split('/').reverse()[0]
动作:这个数组的url.split('?')[1].split('&')/*the most possible separator imho*/元素也可以拼接('=')来分隔变量名和值。
我知道有人认为不应该使用splice,但我认为正确使用它会很漂亮。
【讨论】:
有时在将文件路径传递给 SWF 时,您希望在将文件传递给 AS3 类之前执行 FileExistance 检查。为此,您想知道 URI 是文件还是 http URL 或任何其他具有特定协议(名字对象)的 URI。 下面的代码会告诉你是在处理本地完整路径还是相对路径。
http://younsi.blogspot.com/2009/08/as3-uri-parser-and-code-sequence-to.html
【讨论】: