我有一个字符串6.7.0.0.1.3.6.6.1.6.1.e164.arpa
我怎样才能只得到相反的数字
像16166310076。
任何帮助表示赞赏。
你可以这样做:
list( ,, $num) = explode( ".", strrev( "6.7.0.0.1.3.6.6.1.6.1.e164.arpa"), 3);
echo str_replace( '.', '', $num);
它将反转的字符串转换为由三个元素组成的数组:
arpa
e164
6.7.0.0.1.3.6.6.1.6.1
然后,$num
设置为该数组的第三个元素,即数字的字符串,我将所有的替换为.
空字符串。
这将打印16166310076
.
strrev(implode('', array_filter(explode('.', $string), 'is_numeric')));
<?php
$number = '6.7.0.0.1.3.6.6.1.6.1.e164.arpa';
// Remove dots
$number = str_replace('.', '', $number); // 67001366161e164arpa
// Match number
preg_match("/[0-9]+/", $number, $matches); // array(67001366161)
$number = $matches[0]; // 67001366161
// Reverse number
$number = strrev($number); // 16166310076
// echo number
echo $number;
?>
You can take advantage of PHP type juggling like so:
$result = strrev((int)str_replace('.', '', $str));
str_replace
removes the dots giving you: 67001366161e164arpa
(int)
will remove everything as of the first character that is not a number: 67001366161
.strrev
reverses it.这是一个非基于字符串的解决方案,应该更适合您的需求。
$string = '6.7.0.0.1.3.6.6.1.6.1.e164.arpa';
$parts = explode('.', $string);
$addr = array_reverse(array_slice($parts, 0, count($parts)-2));
echo implode('', $addr); // 16166310076