簡體   English   中英

從包含PHP括號的字符串中提取文本

[英]Extract text from a string that contains brackets in PHP

我有一個國家名稱和代碼的字符串

KT16(Ottershaw)

現在我需要從()提取文本。 我需要提取Ottershaw。 我怎么能用PHP做到這一點。

應該 :

preg_match('/\(([^\)]*)\)/', 'KT16(Ottershaw)', $matches);
echo $matches[1];

只需獲取第一個左括號和最后一個右括號之間的子串:

$string = "KT16(Ottershaw)";
$strResult = substr($string, stripos($string, "(") +1,strrpos($string, ")") - stripos($string, "(")-1);  

以下RegEx應該有效:

/\[(.*?)\]/ 

這是一個示例代碼,用於提取'['和']'之間的所有文本,並將其存儲為2個單獨的數組(即一個數組中括號內的文本和另一個數組中括號外的文本)

function extract_text($string)
   {
    $text_outside=array();
    $text_inside=array();
    $t="";
    for($i=0;$i<strlen($string);$i++)
    {
        if($string[$i]=='[')
        {
            $text_outside[]=$t;
            $t="";
            $t1="";
            $i++;
            while($string[$i]!=']')
            {
                $t1.=$string[$i];
                $i++;
            }
            $text_inside[] = $t1;

        }
        else {
            if($string[$i]!=']')
            $t.=$string[$i];
            else {
                continue;
            }

        }
    }
    if($t!="")
    $text_outside[]=$t;

    var_dump($text_outside);
    echo "\n\n";
    var_dump($text_inside);
  }

輸出:extract_text(“你好,你好嗎?”); 將產生:

array(1) {
  [0]=>
  string(18) "hello how are you?"
}

array(0) {
}

extract_text(“你好[http://www.google.com/test.mp3]你好嗎?”); 會產生

array(2) {
  [0]=>
  string(6) "hello "
  [1]=>
  string(13) " how are you?"
}


array(1) {
  [0]=>
  string(30) "http://www.google.com/test.mp3"
}

暫無
暫無

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

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