我正在尝试从此字符串中提取字符串:
...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"...
我想要的只是网址部分:
http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F84915247&
这是我制作的正则表达式:
$regex = "/^httpamp$/", but it does not work.
答案 0 :(得分:1)
您可以使用:
/url=([^ ]*)/
该URL将位于第一个捕获组中。
答案 1 :(得分:1)
这将有效:
$regex = '~url=\K\S+?&~';
(\K
功能仅保留其位置后的字符)
或有一个lookbehind:
$regex = '~(?<=url=)\S+?&~';
答案 2 :(得分:0)
不建议使用正则表达式解析HTML文本,最好使用DOM解析器。
但是,如果您知道自己在做什么,请使用以下正则表达式:
~\?url=([^;]+)~
您想要的网址在匹配的组#1中可用。
答案 3 :(得分:0)
@anubhava解决方案很好,但我已经对其进行了调整以改进它,并支持新的iframe HTML5 SoundCloud嵌入代码。
\?url=([^"]+)
这将匹配url但不匹配尾随的引号。这样,用户可以输入SoundCloud小部件,然后代码将删除小部件,只留下输入的URL。
然后,当您渲染到屏幕(从数据库输出)时,可以编写第二个脚本以匹配以http://api.soundcloud.com开头的SoundCloud URL并将其包装在窗口小部件中。