0
例如,如果我有一個HTML輸入爲123Smith456%[email protected]#***()NotSmith
,並且我只想要字母字符,那麼我怎樣才能使用正則表達式來匹配並抓取Smith
並將其放入一個變量中?如何獲取匹配正則表達式的字符串的唯一部分?
例如,如果我有一個HTML輸入爲123Smith456%[email protected]#***()NotSmith
,並且我只想要字母字符,那麼我怎樣才能使用正則表達式來匹配並抓取Smith
並將其放入一個變量中?如何獲取匹配正則表達式的字符串的唯一部分?
您可以通過使用preg_match函數中的PREG_OFFSET_CAPTURE選項來執行此操作。
你的表情需要用()包裹來分組你想捕獲的匹配。您可以有任意數量的組,因此您可以捕獲各個部分並將其存儲在各種變量中。
例如:
$string = '123Smith456%[email protected]#***()NotSmith';
preg_match('/(Smith)/', $string, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
這將輸出:
Array
(
[0] => Array
(
[0] => Smith
[1] => 3
)
[1] => Array
(
[0] => Smith
[1] => 3
)
)
如果您正在尋找提取所有實際的 「話」,你可以做這樣的事情:
$string = '123Smith456%[email protected]#***()NotSmith';
preg_match('/([A-Za-z]+)/', $string, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
這將匹配所有出現的任何字符在AZ或az範圍內出現一次或多次的字符。其輸出:
Array
(
[0] => Array
(
[0] => Array
(
[0] => Smith
[1] => 3
)
[1] => Array
(
[0] => NotSmith
[1] => 20
)
)
[1] => Array
(
[0] => Array
(
[0] => Smith
[1] => 3
)
[1] => Array
(
[0] => NotSmith
[1] => 20
)
)
)
在該問題時,如果你使用'/史密斯/'作爲一個正則表達式,它將匹配史密斯,請有關您要輸入和輸出更清晰 –
@Koala我編輯了這個問題,我如何抓住字母字符給我'Smith'。 –
在像https://regex101.com/r/CbP5Af/1這樣的網站上玩正則表達式(我甚至已經開始了你!)閱讀PHP手冊,'preg_match()'http://php.net/manual /en/function.preg-match.php和'preg_replace()'http://php.net/manual/en/function.preg-replace.php – Steve