strip_tags + html объекты, чтобы получить только числа - PullRequest
2 голосов
/ 19 июня 2019

Я бы хотел удалить из этой строки все, кроме суммы в виде числа с плавающей запятой:

<span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">&#8362;</span>700.00</span>

Я пытался:

  1. strip_tags( $total_price_paid ); - Недостаточно.
  2. strip_tags( html_entity_decode( $total_price_paid ) ); - он декодирует сущность в символ, я попробовал preg_replace после, и это не сработало.
  3. preg_replace( '/[^0-9]/', '', $value ); - не избавляется от html-сущности

Никто из тех, кто достиг результата 700.00 в формате с плавающей точкой.

Может кто-нибудь помочь, пожалуйста?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 19 июня 2019

Вам также необходимо удалить специальные фрагменты текста, используемые для определения сущностей , поэтому вам потребуется как минимум еще один проход:

$total_price_paid = strip_tags($total_price_paid);
$total_price_paid = preg_replace("/&#?[a-z0-9]{2,8};/i", "", $total_price_paid); 

Фрагмент кода доступен здесь .

1 голос
/ 19 июня 2019

Если вы хотите использовать preg_match, вы можете использовать вот так:

$string = '<span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">&#8362;</span>700.00</span>';

preg_match('/\d+\.\d{1,2}/', $string, $matches);

echo $matches[0]; // 700.00

DEMO

1 голос
/ 19 июня 2019
$str = '<span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">₪</span>700.00</span>';

echo floatval(substr($str, stripos($str, "</span>")+7, strripos($str, "</span>")+7));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...