[英]regular expression on string into array
我是PHP正則表達式的新手,所以我想知道如何將下面的代碼拆分為所有“東西”都存儲在數組中?
$string = "something here (9), something here2 (20), something3 (30)";
所需結果:
$something_array = array(
[0] => something
[1] => something2
[2] => something3 )
基本上刪除“,”以及括號中的所有內容。
正則表達式將如下所示: (.*?) \\([^)]*\\),?
它用 。 (任何內容),因為您是這樣要求的,但是如果是一個字,則應該改用\\ w,或者除了空格\\ S以外的任何內容,因此應該是這樣的: (\\S*) \\([^)]*\\),?
解釋表達式:
(.*?)
-匹配任何內容,但在惰性模式或“越少越好”模式下 [^)]*
-盡可能匹配除以外的任何內容 \\([^)]*\\)
-匹配一對方括號及其內容 ,?
-如果有逗號則匹配 您可以在這里測試所有這些
最后,使用preg_match_all
PHP函數,它看起來像這樣:
$str = 'something (this1), something2 (this2), something3 (this3)';
preg_match_all('/(\S*) \([^)]*\),?/', $str, $matches);
print_r($matches);
我不會對此類東西使用正則表達式,而只會使用PHP的explode()
函數。
$parts = explode(', ', $string);
$result = array_map(function($element) {
return substr($element, 0, strrpos($element, ' '));
}, $parts);
print_r($result);
以上將輸出
Array
(
[0] => something here
[1] => something here2
[2] => something3
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.