Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 替换所有类型的破折号_Php_Str Replace - Fatal编程技术网

Php 替换所有类型的破折号

Php 替换所有类型的破折号,php,str-replace,Php,Str Replace,我有一个excel文档,我使用库在MySQL中导入它 但文件中的一些文本包含破折号,我认为我已经替换了破折号,但显然不是全部。 -,-,-怎么样: $string = str_replace(array('-','–','-','—', ...), '-', $string); 使用上面的代码,看看它是否有效。如果您仍然看到一些破折号没有被替换,您可以将它们添加到数组中,这样就可以了。只需使用带有unicode修饰符的正则表达式u和字符类: $output = preg_replace('#\

我有一个excel文档,我使用库在MySQL中导入它

但文件中的一些文本包含破折号,我认为我已经替换了破折号,但显然不是全部。
-
-
-
怎么样:

$string = str_replace(array('-','–','-','—', ...), '-', $string);

使用上面的代码,看看它是否有效。如果您仍然看到一些破折号没有被替换,您可以将它们添加到数组中,这样就可以了。

只需使用带有unicode修饰符的正则表达式
u
和字符类:

$output = preg_replace('#\p{Pd}#u', '-', $input);
Pd破折号标点符号


你为什么要这样做?我想
explode()
那篇文本。为什么不使用
str_替换(['-','-','-','-','-','-','-',$sData)
?@AlmaDoMundo,因为这可能不是所有的破折号,尽管如果那是她文档中的所有破折号,那就足够了。换句话说,她不需要计算机中所有的破折号,只需要她的文档中所有的破折号。我只是想确保我没有遗漏一些。谢谢,到目前为止效果很好。但是如何在这个正则表达式中添加空间。所有“-”,而不是“-:)@FakeHeal使用
\s*\p{Pd}\s*
。请注意,
\s*
将匹配空白零次或多次。空白可能是一个普通的空格、制表符、换行符等等。简直太棒了。这正是我希望与跨国合作伙伴合作的地方,他们可能有奇怪的想法,将varios dash chars用作EAN/UPC/GTIN分隔符。这将把它们全部删减,只留下数字,这是这个行业唯一有效的东西。