Php - 只查找字符串中的一个数字

时间:2013-05-18 22:33:45

标签: php

我有一个PHP脚本,它加载不同的ID并将它们发送到GET变量的页面,它们都被昏迷分开:

.../page.php?items=12,13,43,17,

然后我使用while循环加载一个mysql以便显示一个表,我需要查看表项的id是否相同然后它为该表行添加一个样式。

所以我做的是:

$style = (strstr($_GET['ids'], $segn['itemid'])) ? 'style="background:lightgreen;"' : '' ;
<tr class="gradeX" <?= $style ?> >;

在这种情况下,它适用于单个数字。但是如果我有这个IDS: 1, 2, 3 ... 12并且页面获取请求是"page.php?items=12",我会收到ids '12''1''2'

我以为我可以使用explode(',' , $_GET['ids']),但我觉得它太长了。

我如何获得这些ID? (我对regexp没有任何亲和力......)。

3 个答案:

答案 0 :(得分:3)

您必须将ID作为数组使用,而不是作为字符串。所以先做一个数组:

$ids = explode(',', $_GET['items']);

然后检查当前项是否在数组中:

$style = in_array($segn['itemid'], $ids) ? 'style="background:lightgreen;"' : '';

那就是说,你应该使用CSS类而不是内联样式。

答案 1 :(得分:2)

而不是:

strstr($_GET['ids'], $segn['itemid'])

你可以这样做:

in_array($segn['itemid'], explode(',',$_GET['ids']));

答案 2 :(得分:1)

你不需要正则表达式。 像你一样使用爆炸拆分你的get变量:

$items = explode(",", $_GET['items']);

小心 - 你在代码中使用了错误的名称(你的get变量是“items”,而不是“id”);

然后使用in_array检查它是否在那里。

$style = in_array($segn['itemid'], $items) ? 'style="background:lightgreen;"' : '';