人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【php】ある文字列($string)に含まれる[[ ]]で囲まれた文字列を検索してリンクに置き換える、という処理を、なるべくスマートに記述してみてください。


●質問者: kaata
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP String スマート リンク 文字列
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tezcello
●28ポイント
$result = preg_replace(''/?[?[([-_.!~*?'()a-zA-Z0-9;?/?:?@&=+?$,%#]+?)?]?]/'', '<a href="$1">$1</a>', $string);

または、

$result = preg_replace('/?[?[([-!-;=?-Z_a-z~]+?)?]?]/', '<a href="$1">$1</a>', $string);

こんな感じでしょうか?

◎質問者からの返答

条件が足りませんでした。中身はそのままではなく、ある関数に通して使います。

もちろんこの回答でもokです。


2 ● HowAreYou
●27ポイント

意図通りかどうか分かりませんが。

$words = array('はてな' => 'http://www.hatena.ne.jp', 'やふ' => 'http://www.yahoo.co.jp', 'ぐぐる' => 'http://www.google.com') ;

$string = 'あいうえお[[はてな]]かきく[[ぐぐる]]けこさ[[はてな]]しすせ[[やふ]]そたちつてと' ;

$replaced = preg_replace(
 '/\[\[(.*?)\]\]/e',
 '"<a href=\"".$words["$1"]."\">$1</a>"',
 $string) ;

echo $replaced ;
◎質問者からの返答

正規表現を使うとかなり短くできるようですね。

ありがとうございます。


3 ● thrillseeker
●27ポイント

スクリプト:

<?
 $string = "This [[http://www.asahi.com/]zap/]] is a [[http://hatena.ne.jp]] pen.";
 print preg_replace("/\[\[([^\]]*\]*[^\]]*)\]\]/","<a href=\"\$1\">\$1</a>",$string);
?>

出力:

This <a href="http://www.asahi.com/]zap/">http://www.asahi.com/]zap/</a> is a <a href="http://hatena.ne.jp">http://hatena.ne.jp</a> pen.
◎質問者からの返答

ありがとうございます。

予想に反してだいたい同じ回答が集まってしまったので

いるかは一番早かったtezcelloさんに差し上げます:-)

#残念ながら正規表現のどれがスマートなのかは分かりません…

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ