-1

文字列6.7.0.0.1.3.6.6.1.6.1.e164.arpaがあります

逆に数字だけを取得するにはどうすればよいですか

16166310076のように。

どんな助けでも大歓迎です。

4

5 に答える 5

1

次のようなことができます。

list( ,, $num) = explode( ".", strrev( "6.7.0.0.1.3.6.6.1.6.1.e164.arpa"), 3);
echo str_replace( '.', '', $num);

逆文字列を次の 3 つの要素からなる配列に変換します。

  1. arpa
  2. e164
  3. 6.7.0.0.1.3.6.6.1.6.1

次に、その配列の 3 番目の要素 (数字の文字列) に設定し、すべてを空の文字列$numに置き換えます。.

これは印刷されます16166310076

于 2012-11-26T20:19:17.630 に答える
1
strrev(implode('', array_filter(explode('.', $string), 'is_numeric')));
于 2012-11-26T20:30:12.933 に答える
0

次のように、PHP 型ジャグリングを利用できます。

$result = strrev((int)str_replace('.', '', $str));
  • str_replaceドットを削除すると、次のようになります。67001366161e164arpa
  • に型キャストすると(int)、数字ではない最初の文字の時点ですべてが削除されます: 67001366161
  • strrevそれを反転します。
于 2012-11-26T20:25:54.683 に答える
0
<?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;
?>
于 2012-11-26T20:19:52.347 に答える
0

これは、ニーズにより適応できる非文字列ベースのソリューションです。

$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
于 2012-11-26T20:27:43.207 に答える