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

回答の条件
  • 1人2回まで
  • 登録:2007/11/18 17:43:58
  • 終了:2007/11/18 20:07:12

回答(3件)

id:tezcello No.1

tezcello回答回数460ベストアンサー獲得回数692007/11/18 18:47:21

ポイント28pt
$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);

こんな感じでしょうか?

id:kaata

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

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

2007/11/18 20:01:58
id:HowAreYou No.2

HowAreYou回答回数91ベストアンサー獲得回数172007/11/18 19:50:29

ポイント27pt

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

$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 ;
id:kaata

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

ありがとうございます。

2007/11/18 20:02:38
id:thrillseeker No.3

thrillseeker回答回数328ベストアンサー獲得回数372007/11/18 19:39:44

ポイント27pt

スクリプト:

<?
    $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.
id:kaata

ありがとうございます。

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

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

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

2007/11/18 20:04:53

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません