我想在DB
的文字中搜索一个数字并打印出来。数字是产品代码,从4到6位不等。
示例:
aaaaa 1234 aaaa
aaaaa 123456 aaaaa
aaaaa 12345 aaaaa
我得到的是一个完全匹配5个数字的数组,但不是变化而不是打印:
$string = $sql['products_description'];
preg_match_all('/(?<![0-9])[0-9]{5}(?![0-9])/', $string, $match);
for ($i=0; $i<10; $i++) {
echo $match[$i];
echo '<br>';
}
任何帮助?
编辑: 我密切合作:
$string = $sql['products_description'];
preg_match_all('#\d{4,6}#', $string, $matches);
foreach ($matches as $match) {
print_r($match);
}
但返回的内容如下:
数组([0] =&gt; 1234 [1] =&gt; 123456 [2] =&gt; 12345)
我纯粹需要它们(不在数组中),因为我必须稍后单独使用每个数字。在这种情况下,如何提取每个元素并打印出来?
解决方案:
$var = array();
preg_match_all('#\d{4,6}#', $string, $matches);
foreach ($matches as $match) {
$var[] = $match;
}
for ($i=0; $i<=count($matches[0]); $i++) {
for ($j=0; $j<=count($matches[0]); $j++) {
if (($var[$i][$j]) != '') {
print_r($var[$i][$j]);
echo '<br>';
}
}
}
答案 0 :(得分:1)
试试这段代码:
preg_match_all('!\d+!', $str, $matches);
print_r($matches);
编辑:
preg_match_all('/[456]/', $str, $matches);
$var = implode('', $matches[0]);
print_r($var)
答案 1 :(得分:1)
preg_match_all('!\d+!', $str, $matches);
print_r($matches);
$digit=$matches[0][0];
$digit=(int)$digit;
echo $digit;
你会以这种方式得到你的电话号码。
修改#1 强>
print_r($matches[0]);
//Output :
Array
(
[0] => 1234,
[1] => 123456,
[2] => 1234
)
echo implode("",$matches[0]);
//Output: 12341234561234
修改#2 强>
$var1=$matches[0][0];
$var2=$matches[0][1];
$var3=$matches[0][2];
答案 2 :(得分:0)
如果您确定它们长度在4到6之间:
$string = $sql['products_description'];
preg_match_all('#\d{4,6}#', $string, $matches);
foreach ($matches as $match) {
echo $match;
}
我只修改了模式和for循环。
编辑,如果你想“纯粹”:
$string = $sql['products_description'];
$var = array();
preg_match_all('#\d{4,6}#', $string, $matches);
foreach ($matches as $match) {
$var[] = $match;
}