php 5.3との互換性のためにsplitからpreg_splitに変更した後、phpからこの警告が表示されます:
PHP Warning: preg_split(): Delimiter must not be alphanumeric or backslash
phpコードは:
$statements = preg_split("\\s*;\\s*", $content);
正規表現を修正して使用しないようにするにはどうすればよいですか?\
ありがとう!
php 5.3との互換性のためにsplitからpreg_splitに変更した後、phpからこの警告が表示されます:
PHP Warning: preg_split(): Delimiter must not be alphanumeric or backslash
phpコードは:
$statements = preg_split("\\s*;\\s*", $content);
正規表現を修正して使用しないようにするにはどうすればよいですか?\
ありがとう!
エラーは、正規表現の前後に区切り文字が必要なためです。
$statements = preg_split("/\s*;\s*/", $content);
質問は質問されてから2分後に回答済みとしてタグ付けされましたが、記録のためにいくつかの情報を追加したいと思います。
文字列が引用符で区切られるのと同様に、PerlやJavaScriptなどの多くの言語の正規表現はスラッシュで区切られます。これにより、次のような式になります。
/\s*;\s*/
この構文では、修飾子を指定することもできます。
/\s*;\s*/Ui
PHPのPerl互換の正規表現(別名preg _...関数)はこれを継承します。ただし、PHP自体はこの構文をサポートしていないため、preg_split()をフィード/\s*;\s*/
すると解析エラーが発生します。代わりに、引用符で囲んで通常の文字列を作成します。
考慮しなければならないもう1つのことは、PHPでは区切り文字を変更できることです。たとえば、次のように使用できます。
@\s*;\s*@Ui
それは何のために良いですか?スラッシュをエスケープする必要がないため、式内でのスラッシュの使用が簡単になります。比較:
/^\/home\/.*$/i
@^/home/.*$@i
区切り文字が気に入らない場合は、T-Regxツールを使用できます。
pattern("\\s*;\\s*")->split($content):
使用することもできますPattern::of("\\s*;\\s*")->split()