[英]php regex find string patterns
您好,我對regex不好,如果有人可以幫助我,我將不勝感激。 我需要一個正則表達式函數,該函數將查找以:開頭的所有模式,並緊隨其后的是至少1個字母,也許還有數字,直到下次出現符號為止。
例如:hi/:Username@asdfasfasdf:asfs,asdfasfasfs:asdf424/asdfas
如您所見,這里有4種情況。 我想要實現的是最終得到一個包含以下內容的數組:
['hi','Username','asfs','asdf424']
PS。 字母可能使用英語以外的其他語言。
無故拒絕投票...恭喜
這是我到目前為止使用的,但是我想使用正則表達式會更容易
public function decodeRequest() {
$req_parts = $this->getRequestParams(); // <-array of strings
$params = array();
for ($i=0; $i < count($req_parts); $i++) {
$starts = mb_substr($req_parts[$i], 0, 1, 'utf-8');
$remains = mb_substr($req_parts[$i], 0, mb_strlen($req_parts[$i]), 'utf-8');
if ($req_parts[$i] == ':') {
array_push($params,$remains);
}
}
return $params;
}
由於要支持非ASCII字符,因此最好在u
開關中使用\\p{L}
:
$s = ':hi45/:Username@asdfasfasdf:asfsŚAAÓ,asdfasfasfs:asdf424/asdfas';
if (preg_match_all('/:([\p{L}\d]+)/u', $s, $arr))
var_dump($arr[1]);
輸出:
array(4) {
[0]=>
string(4) "hi45"
[1]=>
string(8) "Username"
[2]=>
string(10) "asfsŚAAÓ"
[3]=>
string(7) "asdf424"
}
/:([a-zA-Z][a-zA-Z0-9]*)/
<?php
$string = ":hi/:Username@asdfasfasdf:asfs,asdfasfasfs:asdf424/asdfas";
preg_match_all('/:([a-zA-Z][a-zA-Z0-9]*)/', $string, $matches);
print_r($matches[1]);
輸出:
Array
(
[0] => hi
[1] => Username
[2] => asfs
[3] => asdf424
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.