我将数据库查询的值存储在$domains
中。每条记录如下:domain_23
,domain_88
,domain_0
等。
对于每个值,我想在下划线后提取数字并将其存储在名为$dom_id
的变量中。我该如何实现?这是我的尝试:
foreach($domains as $domain)
{
if (strpos($domain, "_")) {
$domain = $dom_id;
}
}
答案 0 :(得分:2)
您可以使用explode
:
foreach ($domains as $domain)
{
if (strpos($domain, '_')) {
$domainArr = explode('_', $domain);
$domainNum = $domainArr[1]; # should output number
# and if you want it as an int
$domainNum = (int) $domainNum;
}
}
就像IncredibleHat正确说的那样,这是针对具有domain_4
之类的值的域-不适用于domain_thats_cool_4
之类的域-但我们可以像这样使动态性更强:
$domainNum = end($domainArr); # should output number
参考:
答案 1 :(得分:0)
您还可以存储从strpos
返回的偏移量,然后使用substr
:
foreach ($domains as $domain) {
if (($offset = strpos($domain, '_')) && $offset !== false) {
$dom_id = substr($domain, $offset);
}
}
答案 2 :(得分:0)
我喜欢为此使用正则表达式:
foreach ($domains as $domain) {
if (preg_match('!_(\d+)$!', $domain, $matches)) {
$dom_id = $matches[1];
}
}
有趣的是:您可以确保仅匹配字符串末尾下划线之后的数字。
另一方面,正则表达式非常密集,并不是每个程序员都熟悉它们,因此您的学习目标可能会有所不同。