爆炸不能与破折号一起正常工作

Explode not working properly with dash

我们有这个字符串:“Il Responsabile della Sicurezza nelle gallerie – 1° PARTE”,我们想要得到它的两个部分:

  1. Il Responsabile della Sicurezza nelle gallerie
  2. 1° PARTE

我们无法在 char

上使用 explode() 获取它们

我们已经看过 this 但每个答案都不适合我们。

我们已经尝试在前端使用 javascript 但没有得到积极的结果。

我们该如何解决?会不会是 charsted 的问题?(目前是 ISO-859-1,我们无法更改)

你爆炸的角色不是破折号。

复制并粘贴字符,然后尝试。

更正代码:

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

我得到的输出:

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

您的字符串中有 "atypical" 破折号,称为 Unicode 字符 'EN DASH' (U+2013).
将其替换为 utf-8 等效项,然后,您将可以轻松拆分字符串:

$str = "Il Responsabile della Sicurezza nelle gallerie – 1° PARTE";
$endash = html_entity_decode('&#x2013;', 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

我尝试了你所有的解决方案,它们都在我的数据库查询中部分起作用,所以,我尝试在一个函数中使用它们

我希望这有助于获得更好的全球解决方案。

该函数将检查分解是否有效以及向量的索引是否大于零。如果不存在,它将尝试另一种方法来检查 simbol

function get_separated_title($post_title) {
    $repared = str_replace('-', '-', $post_title);
    $titulo = explode("-", $repared);

    if (!isset($titulo[1])) {
        $raw = filter_var($post_title, FILTER_SANITIZE_STRING);
        $repared = str_replace('&#8211;', '-', $raw);
        $titulo = explode("-", $repared);
        if (!isset($titulo[1])) {
            mb_internal_encoding("UTF-8");
            $endash = html_entity_decode('&#x2013;', ENT_COMPAT, 'UTF-8');
            $repared = str_replace($endash, '-', $raw);
            $titulo = explode("-", $repared);
        }
    }
    return $titulo;
}