搜索字符串(变量匹配)并打印

时间:2012-12-24 08:47:54

标签: php string variables search

我想在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>';
    }
  }
}

3 个答案:

答案 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;
}