PHP Regex извлекает все, кроме новых строк и вкладок - PullRequest
0 голосов
/ 09 июля 2019

Я знаю, что этот тип вопросов задают очень часто, но все остальные ответы мне не подходят.У меня есть следующий блок текста:

"""
\n
\t\t\t\t\tÁrea útil\n
\t\t\t\t\t\n
\t\t\t\t\t\t\n
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t150 m²\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n
\t\t\t\t\t\n
\t\t\t\t
"""

И я хочу игнорировать все новые строки и вкладки (\n и \t) и извлекать все остальное в массив.Так, в идеале, например, текстовый блок выше должен быть преобразован в

[
    'Área útil',
    '150m²',
]

РЕДАКТИРОВАТЬ: Вот несколько примеров того, что я пробовал:

(?!\n)(?!\t)[.]+
(?!\n)(?!\t)(.)+
(\r\n)+|\r+|\n+|\t+
^\w+$

РЕДАКТИРОВАТЬ 2: Извините за это, совсем забыл упомянуть, что язык PHP

1 Ответ

0 голосов
/ 09 июля 2019

В PHP вы можете сделать:

<?php
$string = "\n
\t\t\t\t\tÁrea útil\n
\t\t\t\t\t\n
\t\t\t\t\t\t\n
\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t150 m²\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n
\t\t\t\t\t\n
\t\t\t\t";

// Get rid of the tabs
$string = preg_replace( '/(\t)/m', '', $string );

// Split on new lines
$array = preg_split( '/[\r\n]/m', $string );

// Loop the array and get rid of empty strings
foreach( $array as $k=>$v )
{
    if( $v === '' )
    {
        unset( $array[ $k ] );
    }
}

// Re-index the array
$array = array_values( $array );

var_dump( $array );

Какие выходы:

array(2) {
  [0]=>
  string(11) "Área útil"
  [1]=>
  string(7) "150 m²"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...