2016-04-19 1 views
2

У нас есть эта строка: "Il Responsabile делла Sicurezza нелла Галерия - 1 ° PARTE", и мы хотим, чтобы получить две его часть:Explode не работает должным образом с тиром

  1. Il Responsabile делла SICUREZZA Нелл Gallerie
  2. 1 ° PARTE

Мы не в состоянии получить их с помощью explode() на - char

Мы уже видели this, но ни один из ответов не работал для нас.

Мы пробовали в интерфейсе с javascript, но с положительными результатами.

Как мы можем исправить это? Может быть, это проблема Чарстеда? (в настоящее время ISO-859-1 и мы не можем изменить его)

+1

ли тег JavaScript нужен для этого? – evolutionxbox

+0

Это не первый случай, когда кто-то отображает некоторый объект HTML через браузер (например, '—'), а затем попытается манипулировать буквенным символом, созданным (например, '-') ... –

+0

@evolutionxbox yes. В настоящее время мы не можем исправить это в интерфейсе и ни в бэкэнд. –

ответ

3

Существует "атипичный" тир символ в строке, это называется Unicode Character 'EN DASH' (U + 2013).
Заменить его с его UTF-8 эквивалент, то вы будете иметь возможность легко разбить строку:

$str = "Il Responsabile della Sicurezza nelle gallerie – 1° PARTE"; 
$endash = html_entity_decode('–', ENT_COMPAT, 'UTF-8'); 

$str = str_replace($endash, '-', $str); 
print_r(explode("-",$str)); 

Выход:

Array 
(
    [0] => Il Responsabile della Sicurezza nelle gallerie 
    [1] => 1° PARTE 
) 

http://www.fileformat.info/info/unicode/char/2013/index.htm

+0

Прохладный! Но это не работает. Зачем?Я хотел бы дать вам больше информации, но я действительно не знаю, что я могу сказать больше :( –

+1

Я использовал вашу начальную строку, и она отлично работает для меня. Убедитесь, что вы установили эту директиву 'mb_internal_encoding (" UTF-8 ");' прямо в начале вашего скрипта – RomanPerekhrest

+0

Мы конвертировали тире на базу данных в обычном режиме и работали ... ха! –

1

Персонаж, с которым вы взрывы, не тире.

Скопируйте и вставьте символ, а затем попробуйте.

Исправленный код:

<?php 
$str = 'Il Responsabile della Sicurezza nelle gallerie – 1° PARTE'; 
$arr = explode('–', $str); 
echo '<pre>';print_r($arr);echo '</pre>'; 
?> 

выхода я получаю:

+0

_Perfect! ......_ – Rayon

+0

@RayonDabre, спасибо. – Pupil

+1

Да, это не тире. Для frontend javascript вы можете использовать 'var str = 'Il Responsabile della Sicurezza nelle gallerie - 1 ° PARTE"; console.log (str.split ("-")); ' –