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 は 1 番目のキャプチャ グループに含まれます。

于 2013-04-12T12:03:16.790 に答える
1

これはうまくいきます:

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

(この\K機能は、その位置の後に文字のみを保持します)

または後読みで:

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

@anubhava ソリューションは優れていますが、それを改善し、新しい iframe HTML5 SoundCloud 埋め込みコードをサポートするために微調整しました。

\?url=([^"]+)

これは URL に一致しますが、末尾の引用符には一致しません。このようにして、ユーザーは SoundCloud ウィジェットを入力でき、コードはウィジェットを取り除き、入力に URL のみを残します。

次に、画面 (db からの出力) にレンダリングするときに、2 つ目のスクリプトを記述して、 http: //api.soundcloud.com で始まる SoundCloud の URL に一致させ、それをウィジェットにラップすることができます。

于 2013-04-14T13:44:13.347 に答える
0

HTML テキストを正規表現で解析することはお勧めできません。DOM パーサーを使用することをお勧めします。

ただし、何をしているのかわかっている場合は、次の正規表現を使用してください。

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

ご希望の URL は、一致したグループ #1 で利用できます。

ライブデモ: http://www.rubular.com/r/yiqtviBaSd

于 2013-04-12T12:44:05.097 に答える