12345として保存されているデータベースからID番号を取得しています
ページ(php)に表示するときに、1-2345と表示したいのですが。
Javascriptを使用せずにこれを行うことはできますか?もしそうなら、どのように?
ありがとう!
ETA:動的にプルされるデータのループの一部であるため、数は常に異なります。最初の数字の後にダッシュを付けるように指示できる必要があります。必ずしも1-2345ではありません。それはもっとX-XXXXです(Xは乱数です)。
MySQLでは次のものを使用できるはずです。
select
concat(left(yourCol, 1),
'-',
right(yourcol, length(yourCol)-1)) YourValue
from yourtable
SQL FiddlewithDemoを参照してください
これにより、次のMySQL関数が実装されます。
または、 andSUBSTR
の代わりに使用できます:RIGHT
LENGTH
select
concat(left(yourCol, 1),
'-',
substr(yourcol, 2)) YourValue
from yourtable;
SQL FiddlewithDemoを参照してください
PHPの場合
$id = (str)$dbVal;
$str = $id[0]."-".substr($id, 1, strlen($id) - 1);
echo $str;
他の答えは、コードをどこに置くか、そしてその理由を扱っていません。最初の桁の後にダッシュを挿入することは表示関連のロジックであり、表示関連のロジックはテンプレートに属します。それは確かにデータベース層に属していません。実際のコードを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'); ?>
うまくいけば、このように物事を分離することで、他の人やあなたの将来の自分に何が起こっているのかがかなり明確になることがわかります。関数名を見るだけで、「ああ、これは最初の数字の後にダッシュを挿入します」を見ることができます。コードを見て、それが何をするかを考える必要はありません。
$var = "12345";
echo $var[0] . "-" . substr($var,1);
これは、任意の長さの値に対して機能するはずです。
まず、SELECT
MySQLコマンドを使用してID番号を見つけます。$string
実際には、IDの「文字列化された」バージョンであるとしましょう。
$string = "12345";
$string = str_replace($string[0], $string[0] . "-", $string);
echo $string;
$string1 = substr($id, 0,1);
$string2 = substr($id, 1, strlen($id));