regexp, стоит ли усложнять регулярку

wDevil

Новичок
regexp, стоит ли усложнять регулярку

Код:
</b></a><div>ВСЕ ВИДЫ КРЕДИТОВ ДЛЯ ФИЗИЧЕСКИХ ЛИЦ.</div>
<div>115114, Москва, Кожевнический пр., д.&nbsp;4, стр.&nbsp;3</div>
</td><td width="19%">
Вылавливаю это след регуляркой:
Код:
<\\/b><\\/a><div.*?>(.*?)<\\/div><\\/td><td width=\\"19%\\">
Получаю всю строку где и описание и адрес. Но описание может отсутствовать.Хотел учесть наличие описания в регулярке прям. Без проблем канеш можно потом explode или че нить типа того и получить по отдельности каждую. Но как можно ето в регулярке прям сделать.Можно было бы сделать внутри скобок проверку на условие наличия "</div><div>".Что-то а ля такого пытался сделать:"?(.*?<div><\\/div>.*?) pattern_yes|(pattern_no)" Если есть, то выдернуть все по отдельности, если нет, то всю строку вернуть. Но че ту меня не поулучается ет реализовать. Мож как то иначе можно сделать? Или шустрей будет обычными функциями добить и не реализовывать ето в регулярках? Просто получить строки, а уж к нужному виду привести функциями?
 

white phoenix

Новичок
PHP:
$string = '</b></a><div>text1</div><div>text2</div></td><td width="19%">';
$pattern = '~</b></a><div.*?>(.*?)</div>(?:<div.*?>(.*?)</div>)?</td><td width="19%">~';
$result = preg_match_all($pattern,$string,$matches,PREG_SET_ORDER);
var_dump($result,$matches);
/*
int(1)
array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(61) "</b></a><div>text1</div><div>text2</div></td><td width="19%">"
    [1]=>
    string(5) "text1"
    [2]=>
    string(5) "text2"
  }
}
*/
 
Сверху