-2

示例字符串

Rpt#_SPACE_MINVTAN<br_SPACE_/> _SPACE__SPACE__SPACE__SPACE__SPACE_01212_SPACE__SPACE_

第一行末尾有一个换行符。第二行总是有 5 个空格,然后是 5 位数字,然后是另外两个空格....现在我粘贴之前有更多随机文本,之后有更多随机文本。

客户编号后的 _SPACE_ 数量必须为 2 或更多。

我想我正在寻找的是这个:

在大字符串的中间查找_SPACE__SPACE__SPACE__SPACE__SPACE_012345_SPACE__SPACE_

将数字提取到变量中。

4

4 回答 4

1

针对您的特定类型字符串的另一种解决方案:

$string = "Rpt#_SPACE_MINVTAN<br_SPACE_/>_SPACE__SPACE__SPACE__SPACE__SPACE_01212_SPACE__SPACE_";

我已经对此进行了测试,它确实有效。

<?php
$text = "Rpt#_SPACE_MINVTAN<br_SPACE_/>_SPACE__SPACE__SPACE__SPACE__SPACE_01212_SPACE__SPACE_";
$text_array = explode("<br_SPACE_/>", $text);
$array1 = explode("_SPACE_", $text_array[0]);
echo $array1[0] . ' and ' . $array1[1];
$number = trim($text_array[1], "__SPACE__");
echo '<br>and ' . $number;
?>

$array1[0] is the 'Rpt#'
$array1[1] is the 'MINVTAN'
$number is '01212'

在您将此代码放入您的文件并看到它有效后,请记住将其作为解决方案选中,以便其他人知道该帖子已得到答复。如果您有任何其他问题,请随时提出;祝你有愉快的一天。

于 2013-01-08T00:27:48.757 回答
0

如果您想要更具体的解决方案,请发布更具体的代码或信息。

但一种解决方案可能是:

<?php
$trimmed_text = trim($text, "__SPACE__");
?>
于 2013-01-07T23:38:45.737 回答
0

对于像下面这样的字符串,中间有 5 个数字,周围有空格,

_SPACE__SPACE__SPACE__SPACE__SPACE_012345_SPACE__SPACE_

你可以preg_match()像下面这样使用:

$string='_SPACE_SPACE....'; //your string here

preg_match('/\s*(\d{5})\s*/',$string,$matches);

print_r($matches); //$matches[1] will have the matched digits

编辑:

根据 OP,如果文本实际上是 SPACE_,则代码如下:

$string='_SPACE__SPACE__SPACE__SPACE__SPACE_12345_SPACE__SPACE_'; //your string here

preg_match('/[SPACE_]*(\d{5})[SPACE_]*/',$string,$matches);

print_r($matches); //$matches[1] will have the matched digits
于 2013-01-07T23:46:59.057 回答
0

这很丑:

function onlyNumber($str) { 
     $numbers = array(0,1,2,3,4,5,6,7,8,9);
     $icky = array('_','-','#','<','>','/');
     $num = "";
     for($i=0;$i<strlen($str);$i++) { 
            if(!ctype_alpha($str[$i]) && !in_array($str[$i],$icky) && in_array(intval($str[$i]),$numbers,true)) { 
                $num .= $str[$i];
            }
     }
     return trim($num);
}
于 2013-01-08T00:19:38.640 回答