2012-04-17 108 views
0

我有一個從文本:從字符串文本中獲取值時出錯?

$text = 'abc def abc ghi abc jkl'; 
$search = 'abc'; 
$regex = '/'.trim($search).'/ism'; 
if(preg_match_all($regex, $text, $tmp)) { 
    $array_key = $tmp[0]; 
    foreach($array_key as $ak) { 
     echo $ak[1]; 
    } 
} 

當我回聲$ AK [1]是結果是b,我想結果是ABC,如何解決它

ABC DEF ABC ghi abc jkl

回答

0
if(preg_match_all($regex, $text, $tmp)) { 
    $array_key = $tmp[0]; 
    echo $array_key[1]; 
} 
1

echo $ak;怎麼樣在你的循環內?

$ak[1]是在比賽的第二個字符,從而產生b

1

好,$tmp將在您的正則表達式的所有字段的數組。那些數組將包含這些字段的所有值。

你的代碼有效地做的是$ak = $tmp[0][$x] = "abc",當你拿着$ak[1]時,你比陣列實際下降了一級,得到"abc"[1] = "b"

我想你想用echo $ak;代替。

0
I am trying to discuss within your code. I hope its will help 

<?php 
$text = 'abc def abc ghi abc jkl'; 
$search = 'abc'; 
$regex = '/'.trim($search).'/ism'; 
if(preg_match_all($regex, $text, $tmp)) 
{ 
    $array_key = $tmp[0]; 

    /*Test using print_r($tmp); 
    then you will find result: Array([0] => Array ([0] => abc [1] => abc [2] =>  
    abc)) 
    If you want to test/print first array value then echo $array_key[0]; result is: abc 
    Similarly for $array_key[1] or $array_key[2] result is abc 
    That means your array contains 3 same value 
    */ 

    foreach($array_key as $ak) 
    { 
    /*If you use echo $ak[1]; then it will print b because in foreach loop $ak value 
    is: abc 
    You can't print only abc in foreach loop. To print abc you don't need to use 
    foreach loop. Just use echo $array_key[0]; 
    */ 
    } 
    } 
    ?> 

    Maybe your expected code is: 
    <?php 
    $text = 'abc def abc ghi abc jkl'; 
    $search = 'abc'; 
    $regex = '/'.trim($search).'/ism'; 
    if(preg_match_all($regex, $text, $tmp)) 
    { 
    $array_key = $tmp[0]; 
    echo $array_key[0]; 
    } 
    ?> 
    Output: abc