タグの中のname, value値の取得
ある文字列中に次のほぼ同値なinputタグ、
1:<input type="text" name="A" value="B">
2:<input type='text' name='A' value='B'>
3:<input type=text name=A value=B>
がある場合、この中からtext, A, B を抽出しようと思っています.
(さらに、1,2のA, B に半角スペースが含まれる場合も考慮)
自分なりの方法の概略は、
$_ = $str;
~ /(<input[^>]*?>)/;
$tag = $1;
として、<input・・・>を得て、
$tag =~ /name=[\"']{0,1}([^\"']*?)[\"']{0,1}[\s\t>]/i
$name = $1;
$tag =~ /value=[\"']{0,1}([^\"']*?)[\"']{0,1}[\s\t>]/i
$value = $1;
としていたのですが、nameとvalue値が\sを含む場合や、<input>タグの中の"と"の間に > が含まれる場合に正しく動作しません。
何いい方法はないでしょうか.
お礼
わかりやすいご回答をありがとうございます。