2016-11-20 5 views
-1

PHPで文字列を分割する際に助けが必要です。私は現在、別のウェブサイトからデータを掻き集めています。さまざまな点で返された文字列を分割して配列に保存しようとしています。さまざまな点でPHPで文字列を分割する

以下は、分割する方法です。だから私は日付の後、各 "("と ")の後ろに文字を分割したい。その後、配列に格納します。文字列の

例:

2016年1月11日集計マイクロパワー・ホールディングス・ピーエルシー(AMPH)のJPモルガングローバル成長&所得PLC(JPGI)マレー利益信頼PLC(MUT)

例最終結果は

"date" => "01/11/2016", 
"company" => "Aggregated Micro Power Holdings plc", 
"epic" => "(AMPH)", 
"company" => "JPMorgan Global Growth & Income plc", 
"epic" => "(JPGI)", 
"company" => "Murray Income Trust plc", 
"epic" => "(MUT)", 

これまでのところ私はしようとする爆発を使用しようとした「)」の文字の後に文字列を分割しています。

$string = "01/11/2016 Aggregated Micro Power Holdings plc (AMPH) JPMorgan Global Growth & Income plc (JPGI) Murray Income Trust plc (MUT)"; 

$array = explode(") ", $string); 

echo '<pre>' . var_dump($array) . '</pre>'; 

私は次のように得る配列ダンプ場合:

アレイ(1){[0] =>列(129)、「2016年1月11日集計マイクロパワー・ホールディングス・ピーエルシー(AMPH)JPモルガンをグローバル成長&所得ピーエルシー(JPGI)マレーインカム・トラストピーエルシー(MUT) "}

更新*

okが私が働いている日付を分離するために、以下のものを使用して試してみました。

$spilt = preg_split('/(\d{2}\/\d{2}\/\d{4})/', $string, null, PREG_SPLIT_DELIM_CAPTURE); 

ここで、値0が空で表示されるのはなぜですか。

アレイ(3){[0] =>文字列(0) "" [1] =>文字列(10) "01/11/2016" [2] => string(116) "集約マイクロパワーホールディングスピーエルシー(AMPH)JPモルガン・グローバル成長&所得ピーエルシー(JPGI)マレーインカム・トラストピーエルシー(MUT)」}

答えて

1

私は」didnのPreg_matchソリューションを理解していませんが、この2日間を費やして、diffでこの文字列を分割するだけで、別のルートになりました結果を出力することができます。私のソリューションは、次のとおりです。 - は: //文字列(10) "22/11/2016"

// Removes the date and splits the string after every) bracket 
$companies = preg_split('([\)])', str_replace(range(0, 9), '', str_replace('/', '', $string)) , null, PREG_SPLIT_DELIM_CAPTURE); 

これは私与える:
//配列を

$string = '22/11/2016 Iofina (IOF) Gamma Comminucations (GAMA) Ibstock (IBO) Hurricane (HUR) Apple (APPL) Melrose (MRO)'; 

// Splits the string and returns the date 
$date = preg_split('(\s.*)', $string , null, PREG_SPLIT_DELIM_CAPTURE); 
$date = implode('', $date); 

これは私を与えますIbstock(IBO "[3])は、Gamma Comminucations(GAMA" [2] => string(13) "Iopina(IOF" [1] => string(27) =>文字列(15) "ハリケーン(HUR" [4] =>文字列(12) "Apple(APPL" [5] =>文字列(13) "Melrose(MRO)"

<h3><?php echo $date; ?></h3> 
<?php foreach (array_filter($companies) as $key => $value) { ?> 

    <?php echo '<p>' . $value . ')' . '</p>'; ?>  

<?php } ?> 

上記ディスプレイ以下

22/11/2016

Iofina(IOF)

ガンマComminucations(GAMA)

イブストック(IBO)

ハリケーン(HUR)

アップル(APPL)

メルローズ(MRO)

0

あなたは正規表現を使用してこれを達成することができます

thisを参照してください:

$string = "01/11/2016 Aggregated Micro Power Holdings plc (AMPH) JPMorgan Global Growth & Income plc (JPGI) Murray Income Trust plc (MUT)"; 
preg_match_all('/(?P<date>\d+\/\d+\/\d+)\s|\G\s*(?P<company>.*?)\s*\((?P<epic>.*?)\)/', $string, $matches, PREG_SET_ORDER); 
var_dump($matches); 
関連する問題