Я читаю и манипулирую данными из ряда текстовых файлов. Я заметил, что моя функция разбивать некоторые данные на пробелы не всегда работает.
Например, у меня есть
MOST_RECENT_RESULT 100
как часть моего текстового файла. Я использую
$pos = strrpos($string, ' ')
и повторить, где последний пробел справа, чтобы убедиться, что он работает нормально. Это работает для большинства файлов. Но у некоторых есть пустые позиции, которые я нашел странными. Поэтому я скопировал строку из моего браузера и напрямую запустил ее в сценарии, а затем вернул правильную позицию. Что заставляет меня верить, что есть какой-то пробельный код или что-то, чего мне здесь не хватает при доступе к файлам, я пытался \r
\v
\n
но безрезультатно. Как мне узнать, какой именно символ находится в строке? Если это действительно актуальная проблема?
Это должно работать. Вы можете настроить str_replace()
массив для включения символов, необходимых для определения позиции определенного типа пробела, который вы пытаетесь обнаружить:
$string = "MOST_RECENT_RESULT 100";
$string = str_replace(array("\r", "\n", "\r\n", "\v", "\t", "\0","\x"), " ", $string);
$pos = strrpos($string, ' ');
echo $pos;
Я думаю, что я решил это, или по крайней мере продвинул это:
$new = preg_replace('/[\s\W]+/', ' ', $value);
$position = strrpos($new, ' ');
Преобразует не символы в буквальное пространство.