Странный символ тире в PHP

У меня есть странный тире в моем тексте, который не обнаруживается в str_replace .

Вот пример:

Sun: 10:00 – 3:00pm

Я не знаю, появится ли черточка здесь .. но когда она вставлена ​​в мой стол, это похоже на квадратное поле с символами 0096

Он очень похож на – – при просмотре источника нет специальных символов, только тире.

 str_replace('–', '', $var); 

Вышеупомянутая замена, похоже, не улавливает ее, есть ли у кого-либо еще такая проблема?

Это дефис . В php самый переносимый способ получить это с помощью html_entity_decode :

 $endash = html_entity_decode('–', ENT_COMPAT, 'UTF-8'); echo str_replace($endash, '(en dash)', 'Sun: 10:00 – 3:00pm'); 

Обратите внимание, что это работает только в том случае, если кодировка вашего сайта UTF-8 и ваша кодировка редактора (или кодировка третьего аргумента str_replace ) также. Если вы используете другую кодировку (и вы должны использовать ее как для веб-сайта, так и для редактора), замените третий параметр html_entity_decode на свое имя.

http://php.net/manual/en/function.str-replace.php#102465 Яй предложил

 $str = str_replace(chr(150), '-–', $str); // endash $str = str_replace(chr(151), '--', $str); // emdash 

Для альтернативы, если другие ответы не сработают для вас, как и в моем случае, это работает для меня.

 $title = "Hunting, Tactical & Outdoor Optics eCommerce Store ΓÇô $595,000 ΓÇö SOLD"; $title = str_replace(html_entity_decode('–', ENT_COMPAT, 'UTF-8'), '-', $title); $title = str_replace(html_entity_decode('—', ENT_COMPAT, 'UTF-8'), '-', $title); 

Эн-Даш мы привыкли видеть
Em Dash, что мы должны использовать большую часть времени, где используется «-».
В принципе, это грамматика.

Читайте в Википедии: http://ru.wikipedia.org/wiki/Dash

На mac (с макетом для клавиатуры в США) я получаю удар Alt + -, так же, как вы получаете _ со сдвигом + _

Вам не нужна какая-либо специальная обработка, как будто это какой-то китайский символ. Это действительный характер. Рассматривайте это как таковое: str_replace('–', 'em dash'); ,