[英]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.