PHP explode()不能使用" - "字符

0 php explode

我想要对文本进行子串,例如."你好,你好吗?" 通过使用此代码

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

它不会起作用,因为' - '.

如果我改为:

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

没关系.

有人能帮我吗?谢谢.

小智 6

我找到了另一种方法:

$title= filter_var($title, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$title= str_replace('–', '-', $title);
$size = explode('-', $title);
Run Code Online (Sandbox Code Playgroud)

其他任何对我有用


小智 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
Run Code Online (Sandbox Code Playgroud)