|
|
|
| Добрый день.
Как вытащить текст из таблицы:
<table width="100%"><tr><td bgcolor="#AF10B6">Тест1</td><td bgcolor="#AF105F">Текст2<br>56%</td></tr><tr><td bgcolor="#CF8090">Тест3</td><td bgcolor="#9FC0A6">Текст4<br>82,5%</td></tr></table>
(нужно только слова ТекстN)
|<tr><td[^>]+>(.*?)</td><td[^>]+>(.*?)</td></tr>|
работает, но выводит все, но нужно разделить второй столбец, выбрать только текст, без процентов
|<tr><td[^>]+>(.*?)</td><td[^>]+>(.*?)<br>(?)</td></tr>|
не работает..
|
| |
|
|
|
|
|
|
|
для: Петр
(05.07.2007 в 10:39)
| | Попробуйте заменить <br>(?) на (?:<br>.*?)? | |
|
|
|
|
|
|
|
для: kasmanaft
(05.07.2007 в 11:04)
| | Нет, так тоже не получилось, только одна строка выбралась, а должны несколько.
Проценты, не должны попадать в массив, их надо просто пропустить | |
|
|
|
|
|
|
|
для: Петр
(05.07.2007 в 11:12)
| | Ыыыы... они в массив и не попадут..
<?php
$text = '<table.........</table>';
preg_match_all("|<tr><td[^>]+>(.*?)</td><td[^>]+>(.*?)(?:<br>.*?)?</td></tr>|", $text, $regs);
print_r($regs);
?>
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(05.07.2007 в 11:16)
| | Так и не получилось...
Одна строка только подходит, заменяется | |
|
|
|
|
|
|
|
для: Петр
(05.07.2007 в 11:20)
| | Так вам заменить надо или вытащить? Конкретно этот код, что я привел, работает?
Может быть, попропробуйте вот так(?:<br>[\d,.]*%)? | |
|
|
|
|
|
|
|
для: kasmanaft
(05.07.2007 в 11:37)
| | Возвращает пустой массив.
Может подскажете другое, мне можно заменить регулярным выражением следущее:
Исходная строка:
123<br>911
Как вырезать из нее только первое число, т.е. убрать <br> и второе число (второе число всегда 3 символа)?
Это все в Smarty, поэтому надо как-то экранировать {} | |
|
|
|
|
|
|
|
для: Петр
(05.07.2007 в 12:55)
| | >> Конкретно этот код, что я привел, работает?
Ну, конечно, <table.........</table> нужно было заменить :)
>> Может подскажете другое
Нет уж давайте додумаем предыдущий вопрос... :)
Может быть у Вас таблица не одной строкой записана? тогда нужно добавить модификатор 's'
Покажите свой код, тогда можно будет точно сказать почему не работает.
> Исходная строка: 123<br>911, как вырезать из нее только первое число?
Всю строку описывать не обязательно, можно описать только то, что нужно получить:
"^\d+" - найдет как раз "123" (если строка начинается с "123", иначе уберите "^") | |
|
|
|
|
|
|
|
для: kasmanaft
(05.07.2007 в 13:19)
| | Спасибо, все нормально работает
А как мне допустим получить:
Из массива выводятся данные, некоторые ячейки содержат +10<br>+20, некоторые просто +15, как мне разбить одиночное значение на интервал? (прибавить и отнять 5 от значения), чтобы было +10 и +20 | |
|
|
|
|
|
|
|
для: Петр
(05.07.2007 в 13:41)
| | О как!
<?php
$text = '+15';
//$text = '+15<br>+20';
//$text = '+1';
//$text = '-5';
echo preg_replace("#(?<!<br>)((\+|-)\d++)(?!<br>)#e", "sprintf('%+d', $1-5).'<br>'.sprintf('%+d', $1+5)", $text);
?>
|
Если минусы не нужны, замените (\+|-) на \+ | |
|
|
|
|
|
|
|
для: kasmanaft
(05.07.2007 в 14:59)
| | Большое спасибо, очень выручили | |
|
|
|