|
|
|
|
|
для: Sfinks
(16.02.2012 в 03:14)
| | спасибо, все понятно :) | |
|
|
|
|
|
|
|
для: Sfinks
(16.02.2012 в 03:14)
| | спасибо, вот в итоге получилось как
$norm_td=5;
preg_match('|<table class="wide">(.*?)<td colspan="6"><b> Обозначения</b></td>|si', $content, $arr);
preg_match_all('|<tr.*?>(.*?)</tr>|si', $arr[1], $aru);
foreach($aru[1] as $k => $s)
{
//print_r($s);
preg_match_all('|rowspan="(.*?)"|si', $s, $num);
preg_match_all('|<td.*?>(.*?)</td>|si', $s, $ar);
$ar[1] = preg_replace("#</?[^>]+>#s","",$ar[1]);
foreach($ar[0] as $ki => $si)
{
if(($num[1][0]) and strstr($si,"rowspan="))
{
$key=$ki;
$zamena=$ar[1][$key];
}
}
if(count($ar[1])!=$norm_td)
foreach($ar[1] as $ku => $su)
{
if($ku==$key){$ar[1][$key]=$zamena;$op=1;}
if($op)$ar[1][$ku+1]=$su;
}
$op=0;
print_r($ar[1]);
}
| все работает как надо) | |
|
|
|
|
|
|
|
для: ladan
(16.02.2012 в 00:51)
| | Это "не жадный" поиск. Если дана строка:
<teg>text</teg>text<teg>text</teg>text<teg>text</teg>
поиск по маске <teg>.*</teg> найдет <teg>text</teg>text<teg>text</teg>text<teg>text</teg>, т.е. до последнего совпадения (жадный)
а по маске <teg>.*?</teg> найдет <teg>text</teg>, т.е. до первого (не жадный) | |
|
|
|
|
|
|
|
для: Sfinks
(15.02.2012 в 19:20)
| | а что за констукция Либо 0, либо сколько угодно и знак вопроса- это 0 или 1...
Первый раз вижу, как она работает? :) | |
|
|
|
|
|
|
|
для: BMW
(15.02.2012 в 19:16)
| | не <td (*?)>, а <td.*?> либо <td[^>]*> | |
|
|
|
|
|
|
|
для: Sfinks
(15.02.2012 в 19:07)
| | точно, прошу прощения за вопросы, но еще один, а если в тэге td <td rowspan="3"> парсер их не выбирает это надо <td (*?)> прописать? а как число вычленить? | |
|
|
|
|
|
|
|
для: BMW
(15.02.2012 в 18:11)
| | > можно ли выбирать без тегов обрамления <td>
Так в массиве $ar[1] все элементы без тегов.
> а вот только как удалить все остальные тэги
$ar[1] = preg_replace("#</?[^>]+>#s","",$ar[1]);
|
| |
|
|
|
|
|
|
|
для: Sfinks
(15.02.2012 в 16:04)
| | спасибо! да отлично, а вот только как удалить все остальные тэги и можно ли выбирать без тегов обрамления <td>?
preg_match('|<table class="wide">(.*?)</table>|si', $content, $arr);
preg_match_all('|<tr>(.*?)</tr>|si', $arr[1], $aru);
foreach($aru[1] as $s)
{
//print_r($s);
preg_match_all('|<td>(.*?)</td>|si', $s, $ar);
print_r($ar);
}
|
| |
|
|
|
|
|
|
|
для: BMW
(15.02.2012 в 09:57)
| | Вот так:
preg_match('|<table class="wide">(.*?)</table>|si', $table, $arr);
preg_match_all('|<td>(.*?)</td>|si', $arr[1], $aru);
print_r($aru);
| выбираются все внутренности TD.
Если нужно по строкам, то нужно в цикле перебирать промежуточную выборку TR | |
|
|
|
|
|
|
|
для: BMW
(15.02.2012 в 09:57)
| | 1. У меня ваш пример вообще ничего не выводит.
2. А что значит m в |smi ?
3. Вы используете "жадный" поиск (.*) а нужно (.*?) | |
|
|
|
|