我想要对文本进行子串,例如。 “你好,你好吗?”使用此代码
$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
没关系。
有人能帮助我吗?谢谢。
答案 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);
其他任何东西对我有用