不使用任何预定义函数从字母数字字符串中提取数值
Posted
技术标签:
【中文标题】不使用任何预定义函数从字母数字字符串中提取数值【英文标题】:Extract numeric value from an alphanumeric string without using any predefined function 【发布时间】:2015-06-04 10:35:02 【问题描述】:我有一个变量
$string = "(123) 011 - 34343678";
我希望 12301134343678 作为整数数据类型的输出。 如何在不使用 php 或任何其他编程语言中的任何预定义函数的情况下做到这一点。
【问题讨论】:
为什么?简单为什么? PHP 为您提供了执行此操作的工具,您为什么不想使用它们? @Rizier123 是的。我可以使用它们,但在采访中提出了这个问题。 @ErFaiyazAlam 你有没有厌倦什么,从一些代码开始? 如果你自己也编写代码,请考虑一下,肯定会在某个地方使用一些预定义的 php 函数。 @Rizier123 不知道如何开始这样的问题,因为它不需要预定义的函数 【参考方案1】:嗯,这不是最好的解决方案,但这样的事情可能对你有用:
在这里,我只是循环遍历所有字符并检查当您将它们转换为整数然后再转换为字符串时它们是否仍然相同。如果是,则为数字,否则不是。
<?php
function own_strlen($str)
$count = 0;
while(@$str[$count] != "")
$count++;
return $count;
function removeNonNumericalCharacters($str)
$result = "";
for($count = 0; $count < own_strlen($str); $count++)
$character = $str[$count];
if((string)(int)$str[$count] === $character)
$result .= $str[$count];
return $result;
$string = "(123) 011 - 34343678";
echo removeNonNumericalCharacters($string);
?>
输出:
12301134343678
【讨论】:
@anantkumarsingh 我不喜欢代码中的错误控制运算符@
。试图摆脱它
((string)(int)$str[$count] === $character)
这是关键!我们可以确保从字符串中的字符中得到一个数字,它是一个数字 xD 做得很好,Rizier。
顺便说一句,here's Rizier code ideoned - online execution and output.【参考方案2】:
另一种解决方案
<?php
$str = "15as55 - (011)";
$num_array = array();
for($i = 0;$i<=9;$i++)
$num_array[]=$i;
for($coun_str = 0 ; isset($str[$coun_str]) && ($str[$coun_str] != "") ; )
$coun_str++;
$strlen = $coun_str - 1;
$outstr = "";
for($j=0;$j<=$strlen;$j++)
foreach($num_array as $val)
if((string)$val == $str[$j])
$outstr .= $str[$j];
echo $outstr
?>
输出: 1555011
【讨论】:
这个答案缺少教育解释。以上是关于不使用任何预定义函数从字母数字字符串中提取数值的主要内容,如果未能解决你的问题,请参考以下文章