PHP explode()不能使用“ - ”字符

时间:2013-09-08 20:21:30

标签: php explode

我想要对文本进行子串,例如。 “你好,你好吗?”使用此代码

$text= "Hello - How are you?";
$strings = explode(' - ',$text);
echo $strings[0]; // Hello
echo $strings[1]; // How are you

因为' - '而无法使用。

如果我改为:

$text= "Hello-How are you?";
$strings = explode('-',$text);
echo $strings[0]; // Hello
echo $strings[1]; // How are you

没关系。

有人能帮助我吗?谢谢。

3 个答案:

答案 0 :(得分:5)

我有同样的问题,经过一个小时的调查,结果发现从Microsoft Word复制的文本有这样的问题,单词选择将减号( - )转换为短划线( - ),在这里你可以看到它们的一面看看差异: -

我不知道为什么单词会这样做,但是我们习惯于看到这样烦人的事情,你不应该让任何人将文字从单词复制到你的应用程序中!

要使代码在这些条件下工作,必须先替换这些奇怪的字符:

$text= "Hello-How are you?";
$strings = str_replace('–', '-', $text);
$strings = explode('-',$text);
echo $strings[0]; // Hello
echo $strings[1]; // How are you

答案 1 :(得分:1)

机会是,你的"空间"不是真实的空格,而是标签或类似的,而且泛滥可能与标准的不同,例如而不是-

然后您可以尝试以下操作:

$strings = preg_split('/\s[—–-]\s/', $text);

正确拆分该字符串。

答案 2 :(得分:0)

我找到了另一种方式:

$title= filter_var($title, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$title= str_replace('–', '-', $title);
$size = explode('-', $title);

其他任何东西对我有用