Удалить все нечисловые символы из строки в PHP - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь удалить все нечисловые символы из строки. Это строка:

$price = '₪1,180.00';

(первый символ - новый символ валюты израильского шекеля)

Я пытался использовать:

<code>$price_numeric_value = preg_replace( '/\D/', '', $price );
echo '<pre>';var_dump( $price_numeric_value );echo '
'; $ price_numeric_value = preg_replace ('~ \ D ~', '', $ price); echo '
';var_dump( $price_numeric_value );echo '
'; $ price_numeric_value = preg_replace ('/[^0-9.]/', '', $ price); echo '
';var_dump( $price_numeric_value );echo '
';

Как предлагается в этих сообщениях:
https://stackoverflow.com/a/34399544/4711865
https://stackoverflow.com/a/33993704/4711865

Вывод, который я получаю, таков:

string(10) "8362118000"

Есть идеи почему?

РЕДАКТИРОВАТЬ: я запускаю этот код на веб-сайте Wordpress, php-файл кодируется в utf-8 и добавление header('Content-Type: text/html; charset=utf-8'); не помогает.

1 Ответ

0 голосов
/ 13 ноября 2018

8362 - это числовая часть html-сущности для нового знака шекеля &#8362;, когда вы удаляете все нечисловые значения, которые вы получили 8362 непосредственно перед значением.

Вы должны декодировать строку перед preg_replace.

$price_numeric_value = preg_replace( '/\D/', '', html_entity_decode($price) );
echo $price_numeric_value;
...