アプリ版:「スタンプのみでお礼する」機能のリリースについて

php 文字置換について
以下のような文字列で、「記号、小文字、ハイフン」が連続する場合の「小文字、ハイフン」を削除したいです。
実装方法をご教示いただけないでしょうか。
aa-a-b

以下のように実装した所、aa-のa-も削除されてしまいます。削除したいのは-a-のa-のみです。
if (preg_match_all("/[,'\-\(\)\[\]\.:\+\/][a-z]+-/", $d, $hit)) {
____foreach ($hit as $h) {
________$l = count($h);
________for ($k=0; $k<$l; $k++) {
____________$p = substr($h[$k], 1);
____________$d = str_replace($p, "", $d);
________}
____}
}

A 回答 (1件)

色んなパターンがあると思いますが、単純にこなそうとすると



<?php
$data = "ab-c-def-ghi-jk";
$result = preg_replace("/-.*?-/", "-", $data);
echo $data . " &gt; " . $result;

結果
ab-c-def-ghi-jk > ab-def-jk


ですが、記号かどうか、半角小文字英字かどうかとか、挙動的にも
考慮が必要なことはあるのでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/09/30 17:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!