-1

この正規表現を使用して、Web ページから .pdf ファイルをフィルタリングしています。

    $regex='|<a.*?href="(.*pdf?)"|';

リンクが次のような場合、それは仕事をします:

 www.xyz.com/trgrrtr/ghtty.pdf

ただし、リンクが次のようなものである場合は、フィルタリングできません。

 www.xyz.com/trgrrtr/ghtty.pdf?code=KksRHhdVXAoECBFCVFpeXBsBUgYMDQpxd3J2d3F2fDtzfnFuLiErNXNpIG5kYm16aGhpcmxoa05QV1VKUVFFUxQ%3D

このリンクを Web ページから除外するには、どの正規表現を使用すればよいですか?

4

2 に答える 2

0

まず第一に、エスケープする必要があります。?そうしないと、そのf前がオプションになります。次に、次のようなことができます。

$regex = '|<a.*?href="([^"]*\.pdf\?[^"]*)"|';

否定された文字クラスを使用すると、属性を離れることができなくなります。(.*属性の末尾も消費し、文字列のさらに下にある別の二重引用符に一致"するまで続けます。)"

ただし、最初に DOM パーサーを使用してリンク要素を見つけることを強くお勧めします。PHP には組み込みのものがあり、非常に便利で便利なサードパーティ製の代替手段があります。

于 2012-10-30T16:09:17.733 に答える
0

ブログ投稿「URL を照合するための改善されたリベラルで正確な正規表現パターン」が役立つ場合があります。

于 2012-10-30T16:08:53.617 に答える