2

提出された投稿を検証するための解決策を探しています。誰かが(投稿内で)提出したかどうかを確認したい:

  • YouTubeまたはVimeoビデオを埋め込むためのIframeで、Iframeで使用されている正しい幅を置き換えます
  • HTMLのクリック可能なリンクに置き換えられたURL
  • 画像のURL、HTMLに置き換えます

これらの要件ごとに正しい正規表現を見つけることができましたが、3つの個別のpreg_replace関数を使用すると干渉が発生します。たとえば、URLを検出すると、Iframe内のURLも検出されます。

私はこれに関する解決策を、他のインターネットと同様にStackoverflowで探しました。しかし、私は専門家ではないので、誰かが私を助けたり、適切なチュートリアル/ウェブサイト/ハウツーに案内したりする可能性があります...

4

2 に答える 2

1

preg_replace()次のように URL パターンの配列を渡すだけです。

$pattern_array = array(
    '/somepattern/',
    '/someotherpattern/',
    '/yetanotherpattern/',
)
$replacement_array = array(
    'somereplacement',
    'someotherreplacement',
    'yetanotherreplacement'
}

$result = preg_replace($pattern_array, $replacement_array, $subject_string);
于 2012-12-24T18:40:25.857 に答える
1

できることは、最初に iframe を preg_match と一致させてから、それらをプレースホルダーに置き換えることです。

次に、URL/画像の置換を行うことができます。次に、iframe プレースホルダーを以前に一致させた iframe に置き換えます。

preg_replace_callback を使用して一意の順次プレースホルダーを生成できるため、置換ごとに $placeholder_id をインクリメントするコードを実行できます。

これは、複雑な解析を大幅に簡素化できる一般的な戦略です。

于 2012-12-24T18:45:06.293 に答える