есть текст вида: <tr class="cls1">
<td>один</td>
<td>два</td>
<td>три</td>
</tr>
<tr class="cls2">
<td>четыре</td>
<td>пять</td>
</tr>
выражение вида: preg_match_all('/<tr class="cls1">.*<td>(.*)<\/td>.*<\/tr>/Umis', $this->file, $match);
возвращает только первое включение <td> «один»
в то время как мне нужно извлечь все <td> из <tr class=«cls1»> «один», «два», «три»
Извините, точно не подскажу, но на нужное поведение влияет «жадность» алгоритма, которая устанавливается одним из флагов после регулярки. Поищите информацию по этому поводу.
т.е. как выход вы предлагаете в два этапа искать нужные td? об этом я думал, но хотелось бы в один проход найти всё что нужно. Возможно какой-то не очевидный хитрый приём в регулярках существует
Ну если ячеек всегда будет 3, то можно и одной) С перлом на «вы», возможно кто-нибудь уточнит)
Еще у вас какие-то ключи странные) Я обычно использую "/i"
m — многострочный режим поиска, U — делает квантификаторы не жадными, s — заставляет символ. включать в себя и символ переноса строки, i — регистро независимый поиск