2016-07-06 8 views
-1

私は次の文字列を持っています:'Hello [owner], we could not contact by phone [phone], it is correct?'です。部分文字列を正規表現で配列に返します

Regexは配列の形で返したいと思います。すべては[]の範囲内です。ブラケットの内側にはアルファベットだけが表示されます。

戻る:私はPHPで、このリターンを持って進めるべき方法

$array = [ 
    0 => '[owner]', 
    1 => '[phone]' 
]; 

+1

あなたはこの質問に 'preg-match-all'というタグを付けました。その関数のドキュメントには便利な例があります。それを試しましたか? – Jon

答えて

1

試してみてください。

$text = 'Hello [owner], we could not contact by phone [phone], it is correct?'; 
preg_match_all("/\[[^\]]*\]/", $text, $matches); 
$result = $matches[0]; 
print_r($result); 

出力:私はこのすべての最終目標は、あなたには、いくつかの他のテキストと[placeholder] Sを交換したいということであると仮定してい

Array 
(
    [0] => [owner] 
    [1] => [phone] 
) 
+0

ありがとうございました!出来た! – pedrosalpr

1

、その使用代わりにpreg_replace_callback

<?php 
$str = 'Hello [owner], we could not contact by phone [phone], it is correct?'; 

$fields = [ 
    'owner' => 'pedrosalpr', 
    'phone' => '5556667777' 
]; 

$str = preg_replace_callback('/\[([^\]]+)\]/', function($matches) use ($fields) { 
    if (isset($fields[$matches[1]])) {    
    return $fields[$matches[1]];      
    } 
    return $matches[0];    
}, $str);   

echo $str; 
?> 

出力:

 
Hello pedrosalpr, we could not contact by phone 5556667777, it is correct? 
関連する問題