現在PHPの正規表現を勉強していて困った点が出てきました。
入力された文字列を取得して正規表現で文字列によって処理を変えていきたいです。
例) #2###3
このような文字列が送られてきた場合、結果として2#2#2このように、2が3回あります。としたいです。
これは、
PHP
1$value = "#2###3" 2 3if(preg_macth('/\###/' , $value)) { 4 preg_match('/\#.\###./', $value, $hoge); 5 $base = $hoge[0]; 6 $num = substr($base, 0, 2); // 先頭2文字 #2を取得 7 $cnt = substr($base, -1); // ###後の3を取得 8 $result = str_replace($base,$result,$value); // #2#2#2 9}
このような記述で出来ました!
しかし、最後から1文字目とsubstr関数で指定しているからか下記のケースだと思うようにいきません。。
PHP
1$value = "#2###10"
「###」のあとに二桁が来たため、#2#2#2#2#2#2#2#2#2#2
このように10回分になりません。。。
ちなみにvalueには、以下のような形式が入ってきます。
$value = #2###5#1 →#2#2#2#2#2#1
$value = #3###10#1 →#3#3#3#3#3#3#3#3#3#3#1
やり方としては、###の後に次の#までの数字が一桁か二桁かで条件分岐すればいいのでしょうか?
ご教授のほど宜しくお願い致します!
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/10/08 11:48