Каким будет PHP-эквивалент этого регулярного выражения Perl? - PullRequest
0 голосов
/ 18 мая 2010

Каким будет PHP-эквивалент этого регулярного выражения Perl?

if (/^([a-z0-9-]+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$/
  and $1 ne "global" and $1 ne "") {
    print " <tr>\n";
    print "    <td>$1</td>\n";
    print "    <td>$2</td>\n";
    print "    <td>$3</td>\n";
    print "    <td>$4</td>\n";
    print "    <td>$5</td>\n";
    print "    <td>$6</td>\n";
    print "    <td>$7</td>\n";
    print "    <td>$8</td>\n";
    print " </tr>\n";
}

Ответы [ 3 ]

7 голосов
/ 18 мая 2010

Я бы предположил, что вместо использования регулярных выражений вы разделяете пробелы. Все, что вы проверяете, это восемь столбцов, разделенных пробелами.

Посмотрите на preg_split на http://www.php.net/manual/en/function.preg-split.php. Это должно выглядеть примерно так:

$fields = preg_split( '/\s+/', $string );
if ( $fields[0] == '...' ) 
...
6 голосов
/ 18 мая 2010
2 голосов
/ 18 мая 2010

PHP имеет некоторые функции, которые работают с PCRE . Итак, попробуйте это:

if (preg_match('/^([a-z0-9-]+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)$/', $str, $match) && $match[1] != "global" && $match[1] != "") {
    print " <tr>\n";
    print "    <td>$match[1]</td>\n";
    print "    <td>$match[2]</td>\n";
    print "    <td>$match[3]</td>\n";
    print "    <td>$match[4]</td>\n";
    print "    <td>$match[5]</td>\n";
    print "    <td>$match[6]</td>\n";
    print "    <td>$match[7]</td>\n";
    print "    <td>$match[8]</td>\n";
    print " </tr>\n";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...