Использование 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уб');
... и использовать значения массива и ключи для сравнения / печати.
Будет ли это работать?