1

我试图从这个字符串中提取一个字符串:

...width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F84915247&color=da1716&auto_play=false&show_artwork=true"...

我想要的只是 URL 部分:

http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F84915247&amp

这是我制作的正则表达式:

$regex = "/^httpamp$/", but it does not work.
4

4 回答 4

1

你可以使用:

/url=([^ ]*)/

该 URL 将位于第一个捕获组中。

于 2013-04-12T12:03:16.790 回答
1

这将起作用:

$regex = '~url=\K\S+?&amp~';

(该\K功能仅在其位置后保留字符)

或向后看:

$regex = '~(?<=url=)\S+?&amp~';
于 2013-04-12T12:35:26.667 回答
0

不建议使用正则表达式解析 HTML 文本,最好使用 DOM 解析器。

但是,如果您知道自己在做什么,请使用以下正则表达式:

~\?url=([^;]+)~

您想要的 URL 在匹配组 #1 中可用。

现场演示:http ://www.rubular.com/r/yiqtviBaSd

于 2013-04-12T12:44:05.097 回答
0

@anubhava 解决方案很好,但我对其进行了调整以改进它,并支持新的 iframe HTML5 SoundCloud 嵌入代码。

\?url=([^"]+)

这将匹配 url 但不匹配尾随引号。这样,用户可以输入 SoundCloud 小部件,然后代码将删除小部件,只在输入中留下 url。

然后,当您渲染到屏幕(从您的数据库输出)时,可以编写第二个脚本以匹配以http://api.soundcloud.com开头的 SoundCloud url并将其包装在小部件中。

于 2013-04-14T13:44:13.347 回答