[PHP-users 7092] Re: preg_match()の正規表現で URLを抽出し

Osamu Shigematsu php-users@php.gr.jp
Tue, 23 Apr 2002 19:10:34 +0900


重松です。

> preg_match()を使って、正規表現でURLを抽出したいのですが、
> 一部旨く行きません。

どうしても、preg_match() を使いたいのでないなら、

#!/usr/local/bin/php -q
<?php

$txt = "ほげhttp://www.hogehoge.com/hoge.php?hoge=hogehogeうげ";

$html = mbereg_replace(
		'https?://[a-zA-Z0-9.]{2,}(:[0-9]+)?(/[-_.!~*a-zA-
Z0-9;/?:@&=+$,%#]+)?',
		'<a href="\0">\0</a>',$txt);

echo $html;
?>

でどうでしょ?

というか、その元の URL 抽出はかなりヘボイ正規表現なので、まともに書き直した方がよいのでは。
# それ以前に絶対どこかにもっとまともなものが落ちているハズ。
# 私のもかなり適当ですけどね。

あと、Perl 互換の正規表現ライブラリって、国際化されているのでしょうか。。。

> OS:IRIX(unix)v6.5.1
> Apache1.3.20
> PHP4.0.6
> です。

IRIX はどうでもよいとして、Apache も  PHP も随分と古いですね。。。
そういえば、今日 PHP 4.2.0 が正式リリースとなったようです。
これに入れ替えてもらってはどうでしょうか。>その業者
# そうすれば、mbstring に mbregex がマージされているので。

--
Osamu Shigematsu
mailto:shige@ravi.ne.jp