Kendi grubu olduğu gibi her karakteri eşleştirmek için normal bir ifade kullanarak?

4 Cevap php

PHP Ben kendi grubundaki her karakteri eşleştirmek çalışıyorum. Hangi str_split() taklit ediyorum. Denedim:

$string = '123abc456def';
preg_match_all('/(.)*/', $string, $array);
// $array = array(2) { 
//   [0]=>  array(2) { 
//      [0]=>  string(12) "123abc456def"
//      [1]=>  string(0) "" } 
//   [1]=>  array(2) { [0]=>  string(1) "f" [1]=>  string(0) "" } }

Ben böyle bir şey bekliyordum:

//$array = array(2) { 
//   [0]=> string(12) "123abc456def", 
//   [1]=> array(12) { 
//       [0]=>  string(1) "1", [1]=> string(1) "2"
//       ... 
//       [10]=> string(1) "e", [11]=> string(1) "f" } }

Regex başka regex temeli olacak çünkü ben yerine bir düzenli ifade kullanmak istiyorum nedeni str_split() olduğunu.

4 Cevap

Pars dışında * Eğer yakalama grubunu tekrarlamak istiyorum demektir. (Bu, yalnızca son yineleme çekeceği anlamına gelir.) Bu gibi herhangi bir tek karakter küresel bir maç, deneyin:

preg_match_all('/(.)/', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];

Bu deneyin:

preg_match_all('/./s', $str, $matches)

Bu da satır sonu karakterleri eşleşmiyor.

Belki bu sizin için ne arıyor:

preg_match_all('/(.)+?/', $string, $array);

bEn bu istasyon için yardımcı olur ama dizi gibi bir dizE harflEri ErişEbilirsiniz .. biliyorum yok

<?php
$a = "hEdE";
print $a[0] . "\n";
print $a[1] . "\n";
print $a[2] . "\n";
print $a[3] . "\n";
?>

çıktısı

h

E

d

E