Just change (.*)
by ([\s\S]*?)<\/select>
so the complete regexp would be: <select name="ctl00\$ContentPlaceHolder1\$UrunListesi\$ctrl([0-9]{1,2})\$StokBoyut" id="ctl00_ContentPlaceHolder1_UrunListesi_ctrl([0-9]{1,2})_StokBoyut">([\s\S]*?)<\/select>
Demo
.
does not match new lines so you may use [\s\S]
instead which matches anything.
Once you have the select
you want. Use an extra regex value=".*?_(\d+(?:x\d+)?)">.*?Stok:(\d+)
for getting the size and stock values (first and second capturing group)
For example:
<?php
$re = '/<select name="ctl00\$ContentPlaceHolder1\$UrunListesi\$ctrl([0-9]{1,2})\$StokBoyut" id="ctl00_ContentPlaceHolder1_UrunListesi_ctrl([0-9]{1,2})_StokBoyut">([\s\S]*?)<\/select>/mi';
$str = '
<select name="ctl00$ContentPlaceHolder1$UrunListesi$ctrl0$StokBoyut" id="ctl00_ContentPlaceHolder1_UrunListesi_ctrl0_StokBoyut">
<option value="900061_50x80">50x80 Stok:0</option>
<option value="900067_60x110">60x110 Stok:0</option>
<option value="900037_70x140">70x140 Stok:0</option>
<option value="356593_80 T.Yolluk">80 T.Yolluk Stok:2</option>
<option value="356552_80x150">80x150 Stok:23</option>
</select>
<select>
<option value="dontwantthis">xxxx</option>
</select>
<select name="ctl00$ContentPlaceHolder1$UrunListesi$ctrl0$StokBoyut" id="ctl00_ContentPlaceHolder1_UrunListesi_ctrl0_StokBoyut">
<option value="900061_50x80">50x80 Stok:0</option>
<option value="900067_60x110">60x110 Stok:0</option>
<option value="900037_70x140">70x140 Stok:0</option>
<option value="356593_80 T.Yolluk">80 T.Yolluk Stok:2</option>
<option value="356552_80x150">80x150 Stok:23</option>
</select>
';
preg_match_all($re, $str, $matches);
foreach ($matches[0] as $select) {
print "I like this select:______________\n";
print $select . "\n";
print "The values are:**********\n";
preg_match_all('/value=".*?_(\d+(?:x\d+)?)[^"]*">.*?Stok:(\d+)/', $select, $values, PREG_SET_ORDER);
foreach ($values as $value) {
print " - $value[1] and Stock=$value[2]\n";
}
print "\n\n";
}
See it in action here.
Result
The values are:
- 50x80 and Stock=0
- 60x110 and Stock=0
- 70x140 and Stock=0
- 80 and Stock=2
- 80x150 and Stock=23