split uzywajac whitespace ???

0

ktos mi powie dlaczego cos takiego nie chodzi?

$test_string2 = "aa 11 22 01221 absc 012112";

$s_array = split('/\s+/', $test_string2);

    foreach($s_array as $key) {
echo "element {$key} <br />";
    }

a to chodzi znakomicie, czy funkcja split nie zna \s ???

$test_string2 = "aa 11 22 01221 absc 012112";

$patterns[0] = '/\s+/';
$replacements[0] = ':';

$test_string2 = preg_replace($patterns, $replacements, $test_string2);

print "
{$test_string2}
";

$s_array = split(':', $test_string2);

    foreach($s_array as $key) {
echo "<br />element {$key} ";
    }
0

Być może się mylę, ale czy ten character class nie jest od Perla? IMO gdybyś użył preg_split() to by poszło...

0
AklimX napisał(a)

Być może się mylę, ale czy ten character class nie jest od Perla? IMO gdybyś użył preg_split() to by poszło...

preg_split() - idzie bez problemu, ale chcialem wiedziec dlaczego split() nie idzie ???

0

powód jest taki jak napisałem. Więcej tu: http://zamov.online.fr/EXHTML/Perl/Perl_488617.html

0

split nie lapie wyrazen regularnych

No dobra lapie ;)

0
Valarius napisał(a)

split nie lapie wyrazen regularnych

jak nie jak tak - http://pl2.php.net/split

0

Używa wyrażeń regularnych, ale nie Perl'owskich. \s jest elementem wyrażenia regularnego perla.

0

Po prostu jest kilka standardów wyrażeń regularnych.

Najpopularniejsze to POSIX oraz PCRE.
POSIX ma uboższą składnię, a PCRE [Perl Compatibile Regural Expression] ma bogatszą.

W PHP są 2 rodziny funkcji - jedne korzystają z POSIX (np. split lub te z przedrostkiem ereg_) a inne z PCRE (z przedrostkiem preg_).

Skróty klas znaków typu <font color="blue">\w \s</span> są tylko w standardzie PCRE dlatego funkcja obsługująca POSIX będzie rozumiała <font color="blue">\s</span> jako zwykły znak <font color="blue">s</span> a nie takie coś: <font color="blue">[\t\r\n ]</span> (chyba to właśnie jest <font color="blue">\s</span>).

Odpowiednikiem (nie mam 100% pewności, czy identycznym) perlowskiego <font color="blue">\s</span> jest <font color="blue">:space:</span>.

Myślę, że to całkowicie wyjaśnia sprawę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1