2017-07-06 4 views
2

WordPress環境でyoutubeリンクの周りに[embed] [/ embed]を追加しています。ノーマルコンテンツエディタよりもバックエンドで異なるフィールドを入力すると、 。一つのことを除いてRegexが先行していないhref = "

$firstalinea = preg_replace('/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i', '[embed]https://www.youtube.com/watch?v=$2[/embed]', $firstalinea); 

誰かがYouTube-へのリンクを配置した場合:T(あなたはthe_contentをapply_filter場合でも)これを自動的に行う

をだから、私は自分のアプリケーションのための完璧な作品、この正規表現を見つけました。ビデオを埋め込みたいのではなく、それも置き換えられ、リンクはもう機能しません。

<a href="https://youtu.be/xxxxxx">Link</a> 

したがって、正規表現が正しく動作しないようにするには、href = "?

ありがとうございます!

+0

は、それがで先行しているかどうかを確認するためにするpreg_matchでテストを行うのhref私はそれをどのように行うだろう – clearshot66

+0

? – TonyPartyHardy

+0

私は正規表現のテスターでも動作しますが、php7エラー: '(?<!href = \")(http:\/\/| https:\/\ /)(? )[(a-zA-Z0-9 \/\ * \ - )]?youtu(be.com \ watch \?v = | .be \ /) \\ \ \ \ \ \ \ \ \ \ \ – TonyPartyHardy

答えて

1

はそれを解決:

$re = '/(?<!href=\")(http:\/\/|https:\/\/)(?:www\.)?youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i'; 
$firstalinea = preg_replace($re, '[embed]https://www.youtube.com/watch?v=$3[/embed]', $firstalinea); 
関連する問題