PHP düzenli ifade değiştirin?

2 Cevap php

Ben bir dize virgülle (boşluk) alpha-numeric bölünmüş ve non-alpha-numeric istiyorum.

Ben bu ile çalıştı ...

$str = "This is !@#$%^&";
preg_replace("/([a-z0-9_\s])([^a-z0-9_])/i", "$1, $2", $str);

Ama bu sonuç var ...

Bu, var! @ # $% ^ &

Ben bu sonucu almak için arama pattarn nasıl düzeltebilirim?

Bu, var! @ # $% ^ &

Teşekkürler.

2 Cevap

Sen gibi pek, ikinci için ilk grupta her şeyi reddedildiği olmalıdır:

preg_replace("/([a-z0-9_\s])([^a-z0-9_\s])/i", "$1, $2", $str);

Aksi takdirde, o da uzaylarda bölmek istiyorum.

Muhtemelen birden fazla yineleme bu yapmak zorunda kalacaktır. Bu deneyin:

$preg = array( "/([\w\s]+)/i", "/([\W\s]+)/i" ):
$replace = array( "\\1, ", "\\1 " );
$result = rtrim( preg_replace( $preg, $replace, $input ) ); // rtrim to get rid of any excess spaces