2016-10-18 3 views
0

Я пишу php-скрипт для обработки информации, скопированной с внешней веб-страницы.Как определить, какие пробелы?

Я вставляю внешние данные в текстовую область, которая передается через функцию почты PHP.

Одна из линий выглядит примерно так:

972 Дата Название Информация

Этот вопрос, первое место после «972» не является на самом деле пространство. Когда я выполняю функцию strpos с иглой «», она возвращает позицию пространства, следующего за «Date». Возможными решениями являются:

  • Выполнять strpos, который ищет все возможные пробелы.

  • Найдите способ сделать мой браузер эхом из фактического кода пробела, чтобы я знал, что вводить для иглы.

Предложения?

+0

для какой цели, точно? если вы хотите удалить его, просто используйте 'trim()'. –

+0

Мне нужно использовать его как разделитель. Как в поиске позиции, затем выполните функцию substr, чтобы захватить информацию перед «пространством» – Tortooga

+0

@Tortooga, как насчет того, чтобы делать preg_split, а не просто пробелы? –

ответ

1

Вы можете использовать регулярное выражение для перехвата любого символа, который является пробелом любого типа, плюс chr (160) для перехвата неразрывного пространства. Это должно работать:

$str = "972 Date Name Information"; 

if (preg_match_all('/[\s'.chr(160).']/', $str, $matches, PREG_OFFSET_CAPTURE)) { 

    print_r($matches); 
} 

Это должно дать вам следующий результат:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => � 
        [1] => 3 
       ) 

      [1] => Array 
       (
        [0] => 
        [1] => 8 
       ) 

      [2] => Array 
       (
        [0] => 
        [1] => 13 
       ) 

     ) 

) 

где цифры в индексе [1] являются позиции различных пробельных символов в строке.

+0

Интересно, что все, что он вернул, было 8-й позицией. Он все еще не распознает другие пространства. (Кстати, с тех пор я понял, что эти пробелы являются char (160) пробелами) – Tortooga

+0

Это неразрывный символ пробела. См. Здесь: http://www.adamkoch.com/2009/07/25/white-space-and-character-160/ –

+0

Я отредактировал ответ так, чтобы он включал этот символ в регулярное выражение –