Преобразовать строку в php

12
S3
На сайте с 29.03.2012
Offline
361
787

Есть следующая строка:

<td><b>100</b></td><td><font color="red"><b>95</b></font></td>

Из нее нужно убрать все кроме цифр а между цифрами сделать пробелы, приведя к виду:

100 95

Как это сделать?

Пробовал так

$string = $data;//здесь хранится строка

$pattern = "</td>";
$replacement = " ";
$data = strip_tags(preg_replace($pattern, $replacement, $string));
$tabl = explode(" ", $data);

Оставляет только 100

MI
На сайте с 16.07.2008
Offline
74
#1

Можно через DOM например используя http://simplehtmldom.sourceforge.net/ или http://php.net/manual/ru/domdocument.loadhtml.php

iromanov
На сайте с 22.12.2014
Offline
13
#2
Sly32:
Есть следующая строка:
<td><b>100</b></td><td><font color="red"><b>95</b></font></td>

Из нее нужно убрать все кроме цифр а между цифрами сделать пробелы, приведя к виду:
100 95

Как это сделать?
Пробовал так
$string = $data;//здесь хранится строка

$pattern = "</td>";
$replacement = " ";
$data = strip_tags(preg_replace($pattern, $replacement, $string));
$tabl = explode(" ", $data);


Оставляет только 100

Нужно использовать регулярные выражения.

попробуй что-то вроде preg_match_all("!(.*)(\d+)(.*)(\d+)(.*)!is",$data, $data_result);

S3
На сайте с 29.03.2012
Offline
361
#3
metadon.info:
Можно через DOM например используя http://simplehtmldom.sourceforge.net/ или http://php.net/manual/ru/domdocument.loadhtml.php

все-таки хочется попроще и с php

irisat
На сайте с 20.03.2012
Offline
197
#4


$string = '<td><b>100</b></td><td><font color="red"><b>95</b></font></td>';
$string = preg_replace('~[^0-9]+~',' ',$string);
echo $string;
LocalBitcoins (https://goo.gl/1Yxi8M) | Бот обменник (https://goo.gl/bPTaiF) - Покупка и продажа bitcoins! Биржа криптовалют №1 (https://goo.gl/6r6icz) - более 350 пар!
A
На сайте с 19.07.2010
Offline
130
#5

а мне всегда лень использовать DOM, да и стрип_таг тоже.

регулярками:


$data = preg_replace('%<.*?>%s', ' ', $data); // заменяем теги на пробелы
$data = trim(preg_replace('% +%', ' ', $data)); // убираем лишние пробелы
.............
irisat
На сайте с 20.03.2012
Offline
197
#6

Обертка в PHP код квадратные скобки ломает...

$string = '<td><b>100</b></td><td><font color="red"><b>95</b></font></td>';

$string = preg_replace('~[^0-9]+~',' ',$string);

echo $string;

ps: если по какой то причине будут добавляться лишние пробелы, то можно добавить удаление двойных пробелов:

$string = '<td> <b> 100</b></td><td><font color="red"><b>95</b></font></td>';

$string = preg_replace('~[^0-9]+~',' ',$string);

$string = preg_replace('/[\s]{2,}/','',$string);

echo $string;

A
На сайте с 19.07.2010
Offline
130
#7
irisat:
Обертка в PHP код квадратные скобки ломает...

угу, поэтому на форуме лучше использовать обертку CODE

В вашем примере может быть упс, если в тегах встретятся цифры:

$string = '<td><b>100</b></td><td><font color="#FF0000"><b>95</b></font></td>';
S3
На сайте с 29.03.2012
Offline
361
#8
irisat:
Обертка в PHP код квадратные скобки ломает...

$string = '<td><b>100</b></td><td><font color="red"><b>95</b></font></td>';
$string = preg_replace('~[^0-9]+~',' ',$string);
echo $string;

ps: если по какой то причине будут добавляться лишние пробелы, то можно добавить удаление двойных пробелов:

$string = '<td> <b> 100</b></td><td><font color="red"><b>95</b></font></td>';
$string = preg_replace('~[^0-9]+~',' ',$string);
$string = preg_replace('/[\s]{2,}/','',$string);
echo $string;

Спасибо! Первый вариант работает, только пришлось добавить trim() для удаления лишних пробелов по краям - это важно для дальнейшей обработки строки

---------- Добавлено 22.12.2014 в 13:04 ----------

admak:
угу, поэтому на форуме лучше использовать обертку CODE

В вашем примере может быть упс, если в тегах встретятся цифры:

я все равно оставил strip_tags - и теперь даже при выделении цветом все правильно обрабатывает.

[umka]
На сайте с 25.05.2008
Offline
456
#9

Одной регой:

if (preg_match_all("/>\\s*(\\d+)\\s*</",$str,$arr)) {
print_r($arr[1]);
echo implode(" ",$arr[1]);
}

Если внутри атрибутов нет последовательностей вида ">цифры<".

Лог в помощь!
S3
На сайте с 29.03.2012
Offline
361
#10

с дробными числами не работает...

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий