Сравнение строк PHP со специальными буквами - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть массив атрибутов, которые взяты из магазина woocommerce с помощью rest api.Это выглядит так:

Array
 (
 [0] => stdClass Object
    (
        [id] => 6
        [name] => Modelis
        [position] => 0
        [visible] => 1
        [variation] => 1
    )

[1] => stdClass Object
    (
        [id] => 5
        [name] => Krāsa
        [position] => 1
        [visible] => 1
        [variation] => 1
    )

)

В этом массиве я хочу найти элемент с именем 'Krāsa'.Так как он содержит специальные буквы «ā», простое сравнение не работает:

foreach ($attributes as $item):
  if (!strcmp($item->name, 'Krāsa')):
    print_r('Names match');
  endif;
endforeach;

Такое, если предложение всегда ложно, хотя в массиве есть имя Krāsa.Может быть, это мой плохой опыт, но я хотел бы знать, как правильно сравнивать такие строки?

Большое спасибо.

1 Ответ

0 голосов
/ 07 февраля 2019

В некоторых случаях, когда у вас возникают проблемы с кодировкой строк, вы можете преобразовать кодировку строк.

foreach ($attributes as $item):
    if (strcmp(mb_convert_encoding($item->name, 'utf-8', 'auto'), mb_convert_encoding('Krāsa', 'utf-8', 'auto')) == 0):
        print_r('Names match');
      endif;
    endforeach;
...