PHPで作られた掲示板やブログなんかで、URLアドレスやメールアドレスを書いて投稿すると「リンク」みたいに自動で変換する方法がありまして、Tomoはそれのもうちょっと応用した、独自のタグ(以下独自タグ)を指定の方法でリンクにしたり文字の色を変えたりする方法において、もう1年くらい悩んでいることがあるのです。
PHPのプログラムの本を読んだり、検索したりしても判らん。
何がしたいかと言うと、preg_replaceでurlencode
つまり、正規表現で文字列置換と同時にURLエンコードにも置換しちゃう方法。
一応、途中までは出来ている。
<?php
$string = "[test=てすと=f1VxYgaFBXQ]musicABCD[/test]";
$string = preg_replace("/\[test=(\S+?)=(\S+?)\](\S+?)\[\/test\]/e",
"urlencode($1) . $2 . urlencode($3)" ,"$string");
echo "$string\n";
?>
[test=てすと=f1VxYgaFBXQ]musicABCD[/test]
という独自タグを
%82%BD%82%A2%82%C6%82%E9TEST%82%C4%82%B7%82%C6
へ変換してくれる。
しかし、[test=てすと=f1VxYgaFBXQ]music?ABCD[/test]
という風に、『?』等の特殊文字が含まれると、「Fatal error」という構文エラーが発生する。
どんだけ~って感じ。
PHPによるWebアプリケーションスーパーサンプル 第2版
PHPサイバーテロの技法―攻撃と防御の実際
PEAR入門 PHP標準ライブラリを極める!
PHP×WebサービスAPIコネクションズ
PHP Hacks―プロが教えるWebプログラミングテクニック
続きを読む 【PHP】preg_replaceでurlencode(正規表現で文字列置換とURLエンコード) →