簡體   English   中英

Php Preg_Match獲取數組中的引號字符串

[英]Php Preg_Match to get Quoted string in array

需要在數組中獲取帶引號的字符串和不帶引號的字符串

樣本數據

$string='tennissrchkey1 tennissrchkey2 "tennis srch key 3" "tennis srch key 4" "tennis srch key 5"';    

期望的輸出

Array
(
    [0] => tennissrchkey1
    [1] => tennissrchkey2
    [2] => tennis srch key 3
    [3] => tennis srch key 4
    [4] => tennis srch key 5
)

到目前為止嘗試這個但沒有運氣

if (preg_match('/"([^"]+)"/', $string, $m)) {
    echo '<pre>';
    print_r($m);   
} else {
   //preg_match returns the number of matches found, 
   //so if here didn't match pattern
}

任何幫助是極大的贊賞!!!

謝謝!!!

使用preg_match_all函數進行全局匹配。 (?|....)稱為分支重置組 分支重置組內的備選方案共享相同的捕獲組。

$re = '~(?|"([^"]*)"|(\S+))~m';
$str = 'tennissrchkey1 tennissrchkey2 "tennis srch key 3" "tennis srch key 4" "tennis srch key 5"';
preg_match_all($re, $str, $matches);
print_r($matches[1]);

DEMO

輸出:

Array
(
    [0] => tennissrchkey1
    [1] => tennissrchkey2
    [2] => tennis srch key 3
    [3] => tennis srch key 4
    [4] => tennis srch key 5
)
<?php
    $sString = 'tennissrchkey1 tennissrchkey2 "tennis srch key 3" "tennis srch key 4" "tennis srch key 5"';

    $aTmp = explode( ' "', $sString );
    $iCountPieces = count( $aTmp );
    for( $i = 0; $i < $iCountPieces; ++$i )
    {
        $aFormatted[] = trim( $aTmp[ $i ], '"' );
    }
    var_dump( $aFormatted );
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM