簡體   English   中英

如何使用正則表達式從字符串返回單詞?

[英]How do I return words from strings using regular expressions?

我有一些看起來像的數據:

{i:0;s:2:"69";i:1;s:2:"70";i:2;s:2:"71";i:3;s:2:"72";i:4;s:2:"73";i:5;s:2:"74";i:6;s:2:"75";i:7;s:2:"76";i:8;s:2:"77";}

我需要刪除所有引號內的項目,例如69,70,..,77

我知道我應該使用preg_split函數。

我正在尋找有關正則表達式的幫助,該正則表達式需要傳遞給preg_split以便返回所需的數據。

編輯

抱歉,我最初的問題不清楚。 我想收集所有語音標記之間的值,並將它們返回到數組中(我對保留其余數據不感興趣-我只需要語音標記內的值)

編輯2數據是一個序列化的對象,為了節省空間,我沒有包括完整的對象。

沒有正則表達式:

$v = 'a:9:{i:0;s:2:"69";i:1;s:2:"70";i:2;s:2:"71";i:3;s:2:"72";i:4;s:2:"73";i:5;s:2:"74";i:6;s:2:"75";i:7;s:2:"76";i:8;s:2:"77";}';
$v = unserialize($v);
print_r($v);
$v = array_combine(array_keys($v), array_fill(0, count($v), ''));
echo serialize($v); 

但是看起來,max的提及方式就像序列化對象(的一部分)一樣。
您應該檢查您是否能夠使用它的完整語法...

更新

好吧,如果您只想要此序列化數組的值,它將變得更加容易:

$v = 'a:9:{i:0;s:2:"69";i:1;s:2:"70";i:2;s:2:"71";i:3;s:2:"72";i:4;s:2:"73";i:5;s:2:"74";i:6;s:2:"75";i:7;s:2:"76";i:8;s:2:"77";}';
$v = unserialize($v);
$v = array_values($v);
print_r($v);

輸出:

Array
(
    [0] => 69
    [1] => 70
    [2] => 71
    [3] => 72
    [4] => 73
    [5] => 74
    [6] => 75
    [7] => 76
    [8] => 77
)

確實不需要array_values()

如果您確實要刪除引號之間的所有數字,請使用

$string = preg_replace('/"[0-9]+"/', '""', $string);

如果要刪除這些之間的所有內容,請使用

$string = preg_replace('/"[^"]+"/', '""', $string);

對於您編輯的問題:

preg_match_all('/"([^"]+)"/', $string, $matches);

$ matches將包含一個包含字符串的數組數組。

這樣的事情應該起作用:

$str = '{i:0;s:2:"69";i:1;s:2:"70";i:2;s:2:"71";i:3;s:2:"72";i:4;s:2:"73";i:5;s:2:"74";i:6;s:2:"75";i:7;s:2:"76";i:8;s:2:"77";}';
$str = preg_replace('#:"[^"]*"#', '', $str);
echo $str . "\n";

這會更有用

$data = 'a:9:{i:0;s:2:"69";i:1;s:2:"70";i:2;s:2:"71";i:3;s:2:"72";i:4;s:2:"73";i:5;s:2:"74";i:6;s:2:"75";i:7;s:2:"76";i:8;s:2:"77";}';
$data = unserialize($data);
echo implode(',',$data);

暫無
暫無

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

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