-4

たとえば、ここに私の文字列があります:

$text = "Iphone 4, Iphone 4S; Iphone 5, Iphone 3. Iphone 3S";

そして分割文字列:

$splitting_strings = array(".", ";", ".");
$result = array (
   0 => "Iphone 4",
   1 => "Iphone 4S",
   2 => "Iphone 5",
   3 => "Iphone 3",
   4 => "Iphone 3S"
);

私はこのコードを使用しています:

$regex = '/(' . implode('|', $splitting_strings) . ')/';
print_r(implode($regex, $text));
4

3 に答える 3

2

あなたが使用することができますpreg_split

$text = "Iphone 4, Iphone 4S; Iphone 5, Iphone 3. Iphone 3S"; 
$array = preg_split("/[\s]*[,][\s]*/", $text);
print_r($array);
// Array ( [0] => Iphone 4 [1] => Iphone 4S [2] => Iphone 5 [3] => Iphone 3 [4] => Iphone 3S )

編集:

$array = preg_split("/[\s]*[,]|[;]|[.][\s]*/", $text);
于 2012-07-20T09:31:06.743 に答える
1
<?php
$text = "Iphone 4, Iphone 4S; Iphone 5, Iphone 3. Iphone 3S";

$splitting_strings = array_map( 'preg_quote', array('.', ';', '.', ',' ) );

$result = array_map( 'trim', preg_split( '~' . implode( '|', $splitting_strings ) . '~', $text ) ); 

の値は、$result現在の値と同じです。両方の preg_quote (文字をエスケープするため) をトリムとして使用したことに注意してください。

于 2012-07-20T09:34:00.130 に答える
0

regexp を使用する代わりの方法を示すためだけに (ただし、regexp ソリューションの方が効率的です)。

$text = "Iphone 4, Iphone 4S; Iphone 5, Iphone 3. Iphone 3S";
$separators = ',;.';

$word = strtok($text, $separators);
$arr = array();
do {
    $arr[] = $word;
    $word = strtok($separators);
} while (FALSE !== $word);

var_dump($arr);
于 2012-07-20T09:40:20.477 に答える