我想知道如果你有一个字符串,如何检测分隔符?
我们知道php可以使用explode()函数将一个字符串拆分成多个部分,需要提供一个分隔符参数。
但是,在将其发送到explode函数之前,有没有一种方法可以检测分隔符呢?
目前,我只是将字符串输出给用户,让他们输入分隔符。这样做没问题,但我希望应用程序可以为我进行模式识别。
对于这种字符串模式识别,我应该使用正则表达式吗?
编辑:我最初未能指定可能存在的分隔符集。CSV文件中可能使用任何分隔符,但更有可能使用以下字符之一:逗号、分号、竖线和空格。
编辑2:这是我为“确定的分隔符”想出的可行解决方案。
我们知道php可以使用explode()函数将一个字符串拆分成多个部分,需要提供一个分隔符参数。
但是,在将其发送到explode函数之前,有没有一种方法可以检测分隔符呢?
目前,我只是将字符串输出给用户,让他们输入分隔符。这样做没问题,但我希望应用程序可以为我进行模式识别。
对于这种字符串模式识别,我应该使用正则表达式吗?
编辑:我最初未能指定可能存在的分隔符集。CSV文件中可能使用任何分隔符,但更有可能使用以下字符之一:逗号、分号、竖线和空格。
编辑2:这是我为“确定的分隔符”想出的可行解决方案。
$get_images = "86236058.jpg 86236134.jpg 86236134.jpg";
//Detection of delimiter of image filenames.
$probable_delimiters = array(",", " ", "|", ";");
$delimiter_count_array = array();
foreach ($probable_delimiters as $probable_delimiter) {
$probable_delimiter_count = substr_count($get_images, $probable_delimiter);
$delimiter_count_array[$probable_delimiter] = $probable_delimiter_count;
}
$max_value = max($delimiter_count_array);
$determined_delimiter_array = array_keys($delimiter_count_array, max($delimiter_count_array));
while( $element = each( $determined_delimiter_array ) ){
$determined_delimiter_count = $element['key'];
$determined_delimiter = $element['value'];
}
$images = explode("{$determined_delimiter}", $get_images);
,;/|
都是常见的)。根据需要,你可以对文件中字符出现的次数进行计数分析(毕竟,我认为每行至少会出现几次分隔符)... - ircmaxell