Я хотел бы удалить из этой строки все, кроме суммы в виде числа с плавающей запятой:
<span class = "woocommerce-Price-amount amount"><span class = "woocommerce-Price-currencySymbol">₪</span>700.00</span>
Я старался:
strip_tags( $total_price_paid ); - Недостаточно.strip_tags( html_entity_decode( $total_price_paid ) ); - он декодирует сущность в символ, я попробовал preg_replace после, и это не сработало.preg_replace( '/[^0-9]/', '', $value ); — не избавляется от html-объектаНи один из них не достиг результата 700.00, отформатированного как число с плавающей запятой.
Кто-нибудь может помочь, пожалуйста?
Спасибо!






Вам также нужно удалить специальные фрагменты текста, используемые для определения сущности, поэтому вам нужен как минимум еще один проход:
$total_price_paid = strip_tags($total_price_paid);
$total_price_paid = preg_replace("/&#?[a-z0-9]{2,8};/i", "", $total_price_paid);
Фрагмент кода доступен здесь.
$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));
Привет, извините, я снова отредактировал содержимое. вы можете проверить это, если вам нужно.
Если вы хотите использовать preg_match, вы можете использовать так:
$string = '<span class = "woocommerce-Price-amount amount"><span class = "woocommerce-Price-currencySymbol">₪</span>700.00</span>';
preg_match('/\d+\.\d{1,2}/', $string, $matches);
echo $matches[0]; // 700.00
В вашем коде есть синтаксические ошибки, и я не получаю желаемого результата. В любом случае спасибо, я принял ответ Алекса.