Использование in_array с символом валюты?

Я работаю над файлом PHP, который может отражать цену (указанную массивом с другого сайта), конвертированную в определенную валюту (скажем, в €, например).

Я думал об использовании функции in_array, чтобы проверить, содержит ли цена, полученная с другой веб-страницы, символ валюты или нет. Единственная проблема: он не распознает этот символ, даже если я использую предопределенный массив. Если я попытаюсь изменить массив $ currency на фактическую цену, указанную в классе цены, он будет работать. Заранее спасибо!

$html=file_get_contents('http://thewebsite');
preg_match_all("thepriceclass", $html, $a);

foreach(end($a) as $key=> $value)
{
   print print_r($value, true).'<br>';
   $currency = array("€");
   $value = str_split($value);
   $message = "This listing =/= €";

   foreach($value as $letter)
   {
      if (in_array($letter, $currency)) 
      {
         $message = "This listing == €";
         break;
      }
   }
   echo $message;
   break;
}

1 ответ

Сколько у вас валют? Если это не все из них, почему бы вместо этого не использовать коды ISO (например, USD, EUR, JPY и т. Д.)?

Я хотел бы создать небольшую функцию, которая преобразует символы в код и наоборот.

РЕДАКТИРОВАТЬ:

В комментариях вы сказали, что работаете с €, $, £ и pub.

Я думаю, что проблема в кодировке, потому что PHP - это latin1, или что-то в этом роде.

Я бы просто использовал код валюты ( http://en.wikipedia.org/wiki/ISO_4217). В вашем случае: USD, EUR, GBP, RUB, и сравните с этим.

Я не совсем понимаю ваш код, так как вы ищете значение в массиве, но вы всегда печатаете €. Я предполагаю, что это только для тестирования.

Я бы сделал:

$currency = array('EUR');

или же:

$currency = array('USD', 'EUR', 'GBP', 'RUB');

Если вы не можете использовать вышеизложенное, я бы сделал что-то вроде этого...

$currencies = array('USD'=>'$', 'EUR'=> '€', 'GBP'=>'£', 'RUB'=>'pуб');

... и использовать значения массива и ключи для сравнения / печати.

Будет ли это работать?

Другие вопросы по тегам