使用正则表达式从字符串中提取两个值

时间:2009-08-13 17:41:26

标签: php regex

我有一个看起来像这样的字符串:

'p10005c4'

我需要将productId 10005和colorId 4从该字符串中提取到这些变量中:

$的productId $ colorId

productId是> 10000。 colorId> 1。

如何使用正则表达式做到干净整洁?

3 个答案:

答案 0 :(得分:3)

如果你的字符串总是pXXXcXX,我建议你放弃正则表达式,只使用几个字符串函数。

list($productId,$colorId) = explode('c',substr($string,1),2);

答案 1 :(得分:2)

您可以使用以下正则表达式:

'/p(\d+)c(\d+)/'

如果您想确保产品代码是5位数字:

'/p(\d{5})c(\d+)/'

答案 2 :(得分:2)

这应该可以使用以下正则表达式:

/p(\d+)c(\d+)/

这基本上意味着,匹配任何由p组成的字符串,后跟一个或多个数字,然后是c,然后是一个或多个数字。 括号表示捕获组,因为您想要捕获两个ID,所以它们被它们包围。

要将此用于您的目的,您需要执行以下操作:

$str = 'p10005c4';
$matches = array();

preg_match('/p(\d+)c(\d+)/', $str, $matches);

$productId = $matches[1];
$colorId   = $matches[2];

有关正则表达式入门的详细信息,您可能需要查看Regular-Expressions.info