タグ: preg_replace_callback を抽出しています。
Total: 4

正規表現でエンコードされたURLをデコードする。

ブログ | 2009/7/7 00:17
FirefoxでwikipediaのURLをコピペすると日本語がエンコードされている。そういったURLがペーストされた時、それらを正規表現でデコードするのである。

function f_urldecode($str){
 return preg_replace_callback('/(https?:\/\/[a-zA-Z0-9_\(\)\.\/\~\%\:\#\?=&\;\-\+\,]+)/iu',
 create_function(
   '$matches','return urldecode($matches[0]);'
 ),
 $str);
}

URL関係は、エンコードしたり、デコードしたり忙しい。

PHP正規表現 パターン演算子u

ブログ | 2009/5/9 21:38
ダニエル・カールが化けるので調べてみた。
preg_replace_callbackで化けていた。

URLの変換は、
$str = preg_replace_callback('/(<a [^>]+?>.+?</a>)|(https?://[^ ^\r\n^<^)^)^ ]+)/i', array($this,'url'), $str);
こんな感じにしていたのだけれど、正規表現内の「^)」「^ 」で化けていたようだ。
で、検索していたら、PHPの正規表現には、UTF-8用の「u」というパターン演算子があるとのこと。
http://jp2.php.net/manual/ja/reference.pcre.patt...

で、uをつけて解決。
$str = preg_replace_callback('/(<a [^>]+?>.+?</a>)|(https?://[^ ^\r\n^<^)^)^ ]+)/iu', array($this,'url'), $str);

▼追記 2009/5/9 21:49
ん、パターン修飾子って言うのか。

URLの判別

ブログ | 2008/2/21 03:36
$str = preg_replace_callback('/(<a [^>]+?>.+?<\/a>)|(https?:\/\/[^ ^ ^\r\n^<^)^)]+)/i', array($this,'url'), $str);

同じクラス内の function url($str){} で処理。

これでいってみよう。
wikipediaで「)」が入ってるURLを見たことがある気がするけど。

日本語URLをエンコード

ブログ | 2008/1/27 18:46
<?php

$str =  'http://ja.wikipedia.org/wiki/行司?name=村庄之助&装束=夏用は麻薄地';

echo preg_replace_callback(
 '/[ -熙]+|[ぁ-ヴー]+|[。-゚]+|[A-z0-9]+/',
 create_function(
   '$matches',
   'return urlencode($matches[0]);'
 )
 ,$str);

?>

こんな感じか。

参照
http://au.php.net/manual/ja/function.preg-replac...

create_functionなんていう技があるのね
http://au.php.net/manual/ja/function.create-func...
前 | 1 | 次

Rottel内コンテンツ

ユーザー一覧

Rottelとは?
利用規約
開発飲料
利用者の声
ヘルプ
close