|
|
|
| Можно ли как то в регулярном выражении указать границы, например чтобы в отдельной переменной были данные от и до. Возможно есть какой-то спец символ для этого?
Мне нужно <div class="div_zag">тут любой текст</div>. Но таких дивов может быть много и количество менятся, поэтому приходится "захватить" еще часть хтмла.
Можно это все сделать двумя регулярками, либо потом отрезать лишнее строковыми фун-ми. Но возможно это можно сделать "красиво" и в одно выражение?
<?
preg_match_all('%<td align="left" valign="top" class="main_middle">\s*<div class="div_zag">.+</div>%isU', $body, $out, PREG_SET_ORDER);
?>
|
Заранее спасибо. | |
|
|
|
|
|
|
|
для: Слух
(14.01.2010 в 14:33)
| | не понятно нужны-ли только <div class="div_zag">.+?</div>
идущие обязательно после <td align="left"......................
'%<td align="left" valign="top" class="main_middle">\s*(<div class="div_zag">.+</div>)%isU'
и в массиве $out будет полностью $0 и $1 то что нужно
, а там PREG_PATTERN_ORDER или PREG_SET_ORDER будет удобнее
, var_dump($out); , и смотрите исходный текст страницы
или просто '#<div class="div_zag">.+?</div>#is'
, если я неправильно понял | |
|
|
|
|
|
|
|
для: heed
(14.01.2010 в 15:59)
| | Спасибо, разобрался правда еще до вашего ответа, нужно было только форум полистать.
Если не сложно скажите чем отличаются выражения обраленные разными символами.
Например
<?
preg_match_all("/тут какойто текст \s*(<div> .+то что мы получим обраленное дивами</div>)/is", $body, $out, PREG_SET_ORDER);
preg_match_all("#тут какойто текст \s*(<div> .+то что мы получим обраленное дивами</div>)#is", $body, $out, PREG_SET_ORDER);
?>
|
Тут слеши и знак #, c % вы объяснили что к чему. Возможно есть еще варианты? | |
|
|
|
|
|
|
|
для: Слух
(14.01.2010 в 16:47)
| | > чем отличаются
ничем
>
точно не скажу, в доках php по этому поводу не нашёл
, но мне хватает хотябы '"@!~#&№/
в перл все нецифро-пробельно-буквенные + разные парные скобки
и точку и [] вроде нельзя нигде использовать
, а в php вроде нету '<a.*b>i' | |
|
|
|