Какой самый простой способ разобрать строку и заменить 1/2 на 1/2 (и аналогичные) в PHP? - PullRequest
1 голос
/ 22 сентября 2010

У меня есть строка с множеством дробей, таких как 1/2, 1/4 и т. Д. Я хочу заменить их эквивалентами Юникода.

Я понимаю, что могу взять их с

/\s(\d+)\/(\d+)\s/

Как бы я заменил их на их Unicode-эквиваленты? Возможно, я мог бы обернуть числа в span и сделать что-то похожее с CSS, но мне было интересно, есть ли простой способ их преобразования.

Нужно ли сопоставлять регулярное выражение 1: 1 символу Юникод?

Ответы [ 2 ]

6 голосов
/ 22 сентября 2010

Тебе повезет больше, если ты будешь так показывать.Не каждый может иметь те шрифты Unicode, которые вам нужны.

echo preg_replace ( '/\b(\d+)\/(\d+)\b/', '<sup>$1</sup>/<sub>$2</sub>', $fraction );

или:

echo preg_replace ( '/\b(\d+)\/(\d+)\b/', '<sup>$1</sup>&#8260;<sub>$2</sub>', $fraction );

дробный слеш &#8260; будет выглядеть как *.

лучшее решение, если вам нужно отобразить большие дроби: 2567 5798

4 голосов
/ 22 сентября 2010

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

$fractions = array(
    '1/4' => '¼', '1/3' => '⅓',
    '3/8' => '⅜', ...
  );

Я бы сказал, что это, вероятно, самый простой способ ... помните, что многие выиграли 'не установлены шрифты, которые могут отображать их все равно.

...