我想用这段代码对文本进行子串串,例如"你好 - 你好吗?"(你好吗?)
$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
还行。
有人可以帮助我吗?谢谢。
我找到了另一种方法:
$title= filter_var($title, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);
$title= str_replace('–', '-', $title);
$size = explode('-', $title);
其他任何东西都对我有用
我
遇到了同样的问题,经过一个小时的调查,原来从Microsoft Word复制的文本有这样的问题,word选择将减号字符( - )转换为破折号( – ) 在这里您可以并排看到它们以查看差异:-–
我不知道为什么word会这样做,但是我们习惯于看到通过单词完成这些烦人的事情,您永远不应该让任何人将文本从单词复制到您的应用程序!
为了使代码在这些条件下工作,您必须首先替换这些奇数字符:
$text= "Hello-How are you?";
$strings = str_replace('–', '-', $text);
$strings = explode('-',$text);
echo $strings[0]; // Hello
echo $strings[1]; // How are you
很有可能,您的"空格"不是真正的空格,而是制表符或类似空格,并且连字符可能与标准连接不同,例如 —
或 –
而不是 -
。
然后,您可以尝试以下操作:
$strings = preg_split('/'s[—–-]'s/', $text);
以正确拆分该字符串。