2016-11-18 44 views
1

我需要把像user-profile/id=3這樣的字符串轉換爲正則表單。我試過'user-profile/id=\d+$''user-profile/([a-z][.][0-9]+)/?$',但他們都沒有工作。什麼是正確的方法?WordPress的正則表達式不能按預期工作

+0

你想從得到什麼這個字符串與正則表達式? –

+0

我只想提取'id = 3'部分。 –

+0

在這種情況下,我希望我的回答能幫助你。 –

回答

1

由於你的字符串是alw ays的格式如上,你不需要一個正則表達式。用區區explode

explode("/", $s)[1] 

this demo

另一個非正則表達式的方法:使用strstr後,包括/得到子,然後拿到substr從1噸焦炭荷蘭國際集團:

substr(strstr($s, "/"),1); 

another PHP demo

+0

如果我的答案對您有幫助,請考慮upvoting(請參閱[如何在堆棧溢出上註冊?](http://meta.stackexchange.com/問題/ 173399 /如何對給予好評,對堆棧溢出))。 –

1

你的問題是,你不是逃避/字符反斜槓。

解決該問題後可能會遇到的另一個問題是您正在使用$字符,這意味着行尾。如果之後有更多的字符,即使只有一個空格,那麼它也不會匹配。

如果你嘗試:

user-profile\/(id=\d+) 

你可能會發現,它匹配得很好。我添加的括號將在捕獲組#1中捕獲id=3

+0

沒有必要在正則表達式中轉義'/'。嘗試''〜用戶配置文件/(id = \ d +)〜'' –

0

如果你只是想提取id=3我建議使用preg_replace。像:

$str = 'user-profile/id=3'; 
$after_preg = preg_replace('/user-profile\//', '', $str); 
echo $after_preg; 

如果你想獲得只是一個數字就可以如下:

$str = 'user-profile/id=3'; 
$after_preg = preg_replace('/user-profile\/id=/', '', $str); 
echo $after_preg; 

更多關於它,你可以在PHP Manual: preg_replace

閱讀如果你想檢查是否字符串就像user-profile/id=3你可以用正則表達式:

user-profile\/id=\d* 
相關問題