• 締切済み

カッコを使った文字列の分割について

文字列がいくつか存在し(個数不定)、そのそれぞれの文字列はカンマで区切られております。 その中には、文字列+カッコに挟まれた文字列、というのも存在します。 ex1) hoge,test(hogehoge),nana その文字列をカンマで区切り、それぞれをaタグで結びます。 ex2) <a href="hoge">hoge</a>/<a href="test(hogehoge)">test(hogehoge)</a>/<a href="nana">nana</a>/ ---現段階で自力で完成したのはここまでです--- 今度はそのうち、カッコで区切られているモノも分割し、aタグで結ぼうと思います。 ex3) <a href="hoge">hoge</a>/<a href="test">test</a>(<a href="hogehoge">hogehoge</a>)/<a href="nana">nana</a>/ このように扱いたいのですが、どうすればいいでしょうか。 参考までにex2までのソースを張っておきます。 お返事、お待ちしております。 以下、ソース抜粋 $LOADSNG="hoge,test(hogehoge),nana"; $EXPSNG=split(",",$LOADSNG); foreach($EXPSNG as $KEYSNG=>$VALSNG){ echo ($KEYSNG==0?"":"/").'<a href="'.$VALSNG.'">'.$VALSNG.'</a>'; }

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

こんな感じでしょうか? <? $LOADSNG="hoge,test(hogehoge),nana"; $str = preg_replace( "/([^,\(\)]+)/" , '<a href="\1">\1</a>', $LOADSNG ); $str=str_replace(',','/',$str); print $str; ?>

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

正規表現あんまり得意じゃないので効率的じゃないかもしれませんが こんな感じでどうでしょ? <? $str="hoge,test1(hogehoge1),test2(hogehoge2),test3(hogehoge3),nana"; preg_match_all("/([^,]+)\(([^,]+)\)|([^,]+)/",$str,$matches); $html=""; for($i=0;$i<count($matches[0]);$i++){ foreach($matches as $key=>$val){ if($key==0) continue; $word=$val[$i]; if($word!="") $html.="<a href=\"{$word}\">{$word}</a>"; } } print htmlspecialchars($html); ?>

関連するQ&A

専門家に質問してみよう