2017-10-23 7 views
0

私はwysiwyg拡張を構築しており、画像のアップロードと処理のためのライブラリを構築しました。 はさらに、私はそうのようなWYSIWYG出力から一部のデータを抽出したいコードに統合するには:Regex:タグから幅と高さを取得する

$content = '<img class="left media-id-1657" src="someurl" width="113" height="97" />'; 
preg_match_all('/<[^>]*class="[^"]*\media-id-([0-9]{1,10})\b[^"]*"[^>]*>/i', $content, $matches); 

これは私にこの場合には1657で指定されたidを与えます。それは素晴らしい作品であり、変更は必要ありません。

しかし、今でも幅と高さを取得する必要があります。しかし、いくつかの愚かな理由のために私はそれを抽出することはできません。私はこれを思いついた:

/<[^>]*class="[^"]*\media-id-([0-9]{1,10})\b[^"]*width="([0-9]{1,10})"[^>]*>/i 

しかし、それは0試合を与えるように私がしたいとは思わない。 http://regexr.com/3h14n

+0

あなたは文字列を最初に分解することができます、あなたの正規表現は(foreachを加えて)はるかに簡単に作成することができます。 – Nic3500

+1

属性の順序が変わるとどうなりますか?パーサーを使用します。 – chris85

答えて

0

この1

preg_match('/width="(.*?)"/', $content, $matchesWidth); 
preg_match('/height="(.*?)"/', $content, $matchesHeight); 
print_r($matchesWidth[1]); //Output 113 
print_r($matchesHeight[1]); //Output 97 
+0

私はOPが抽出する前にOPの 'media-id'部分がそこにあることを確認したいと思っています。したがって、長い正規表現。 –

0

を試してみてください申し訳ありませんが、すでにいくつかは遊ん後にそれを得ました。

/<[^>]*class="[^"]*\media-id-([0-9]{1,10})\b[^"]*"[^>]*width="([0-9]{1,10})"[^>]*height="([0-9]{1,10})"[^>]*>/i 
+0

- 次の ">"がない場所に移動します。 - 「幅=」を検索 - 変数を取得 - タグを閉じる – Matt

0

\bと文字列のwidth部分ではなく、正規表現の間での引用符があります。

は、この作業を行います:

/<[^>]*class="[^"]*\media-id-([0-9]{1,10})\b.*width="([0-9]{1,10})"[^>]*>/i 
0

使用すると、1つの正規表現でそれをすべて行う必要がある場合、これは現在の順でのparamsのために働く必要があります。

<img class="\D+(\d+)".*?width="(\d+)" height="(\d+)" 

言われていること、がある場合幅、高さなどの間に余分なスペースがあります。これらの問題をコード化する必要がありますが、データが常にその形式になると確信していればうまくいきます。個人的に私は3つの正規表現に分割します。あなたの現在のものと高さと幅のための非常に単純な:

関連する問題