3

12345として保存されているデータベースからID番号を取得しています

ページ(php)に表示するときに、1-2345と表示したいのですが。

Javascriptを使用せずにこれを行うことはできますか?もしそうなら、どのように?

ありがとう!

ETA:動的にプルされるデータのループの一部であるため、数は常に異なります。最初の数字の後にダッシュを付けるように指示できる必要があります。必ずしも1-2345ではありません。それはもっとX-XXXXです(Xは乱数です)。

4

6 に答える 6

12

MySQLでは次のものを使用できるはずです。

select
  concat(left(yourCol, 1), 
         '-', 
         right(yourcol, length(yourCol)-1)) YourValue
from yourtable

SQL FiddlewithDemoを参照してください

これにより、次のMySQL関数が実装されます。

または、 andSUBSTRの代わりに使用できます:RIGHTLENGTH

select
  concat(left(yourCol, 1), 
         '-', 
         substr(yourcol, 2)) YourValue
from yourtable;

SQL FiddlewithDemoを参照してください

于 2013-03-25T16:52:48.290 に答える
4

PHPの場合

$id = (str)$dbVal;
$str = $id[0]."-".substr($id, 1, strlen($id) - 1);
echo $str;
于 2013-03-25T16:54:38.797 に答える
3

他の答えは、コードをどこに置くか、そしてその理由を扱っていません。最初の桁の後にダッシュを挿入することは表示関連のロジックであり、表示関連のロジックはテンプレートに属します。それは確かにデータベース層に属していません。実際のコードをHTMLのすぐ横に配置することもできますが、それはa)おそらくあまり意図を明らかにするものではなく、b)あまり再利用できないものになります。

関心の分離を最適化するために、最初に次のような「ヘルパー」関数を独自のファイルで定義します。

function insert_dash_after_first_number($value)
{
  return str_replace($value[0], $value[0].'-', $value);
}

次に、テンプレートでこれを行うことができます(ヘルパーファイルを含めた場合)。

<?php echo insert_dash_after_first_number('12345'); ?>

うまくいけば、このように物事を分離することで、他の人やあなたの将来の自分に何が起こっているのかがかなり明確になることがわかります。関数名を見るだけで、「ああ、これは最初の数字の後にダッシュを挿入します」を見ることができます。コードを見て、それが何をするかを考える必要はありません。

于 2013-03-25T16:54:18.733 に答える
3
$var = "12345";
echo $var[0] . "-" . substr($var,1);

これは、任意の長さの値に対して機能するはずです。

于 2013-03-25T16:56:36.103 に答える
3

まず、SELECTMySQLコマンドを使用してID番号を見つけます。$string実際には、IDの「文字列化された」バージョンであるとしましょう。

$string = "12345"; 
$string = str_replace($string[0], $string[0] . "-", $string); 
echo $string; 
于 2013-03-25T17:00:31.470 に答える
2
 $string1 = substr($id, 0,1);
 $string2 = substr($id, 1, strlen($id));
于 2013-03-25T16:55:01.973 に答える