2012-04-14 9 views
2

PHPでpreg_replace()を使用してテキストを取得するときに問題があります。私は最初の空白文字までhttp | https | wwwで始まるすべてのテキストを削除しようとしています。私は現在使用しています: (http | https | www)\ S + 私の正規表現としてpreg_replace()。しかし、私はこのコードを実行中にこのエラーが発生しています: 警告:preg_replace():不明な修飾子 '\' 私はテキストエディタでこの正規表現を使用できます。崇高なテキスト2は問題ありません。なぜこのエラーが発生しているのですか?私は正規表現で探しているテキストをつかむ別の方法はありますか?httpで始まる文字列を、PHPの最初の空白文字まで取得します。

ありがとうございました。

答えて

3

正規表現を区切る必要があります。これは通常スラッシュ(/)ですが、かっこのペアにすることもできます。 2番目の区切り文字の後には、複数の区切り文字(複数行正規表現、空白を無視する、大文字小文字を区別しないなど)を続けることができます。 \は有効な修飾子ではないため、PHPは文句を言います。

次のように正規表現を変更します。

preg_replace('/(http|https|www)\S+/', …, …); 
+0

ありがとうございます!私はあなたがスラッシュで正規表現を区切らなければならなかったことを知らなかった。私の問題を完全に修正しました。 –

0

あなたの正規表現の^インフロントは使用しない理由:

/^(http|http|www)/ 

をこれは、文字列

1

の先頭にのみマッチし、これを試してみてください。

$string = preg_replace('%(http|https|www).*?\s%', '', $string); 
0

この1作品: [デモ:http://regexr.com?30l4d]

$newstring = preg_replace("/((https?|www).*?)\s/", "", $string); 
0

あなたは、文字列はPHPでエスケープされているかについて注意する必要があります:

を例えば、"\s"はエスケープ秒であり、そして'\s'がbackashですsによってfolowed。

また、正規表現の最初と最後にスラッシュを追加することを忘れないでください。例:'/myregexp.*/'

関連する問題