2017-12-28 9 views
0

検索文字数を増やす方法は?今の例では3276文字ですが、3275でOKの作品はPHP pregすべての制限を3725文字に一致

ini_set("pcre.backtrack_limit", "23001337"); 
ini_set("pcre.recursion_limit", "23001337"); 

$str = "<div>"; 
for ($x=1;$x<=327;$x++){ 
    $str .= "1234567890"; 
} 
$str .="123456"; 
$str .= "</div>"; 

$w1 = "/<div>((.*?|\n)*)<\/div>/"; 
preg_match_all($w1, $str, $matches); 
print_r($matches); 
+0

私はそれがパッチされていないPHPバグだと思うhttps://bugs.php.net/bug.php?id=45735#1365812629 – MonkeyZeus

+1

^それとも - https://stackoverflow.com/questions/17926195/php-preg- match-length-3276-limit – splash58

+0

http://php.net/manual/en/pcre.configuration.phpを変更できない場合は、この制限を引き起こさないように正規表現を変更する必要があります。 – MonkeyZeus

答えて

1

pcre.jitを無効にしてみてください(PCREの実行時コンパイラを使用しないでください):

<?php 
ini_set("pcre.jit", "0"); 

$str = "<div>"; 
for ($x=1;$x<=327;$x++){ 
    $str .= "1234567890"; 
} 
$str .="123456"; 
$str .= "</div>"; 

$w1 = "/<div>((.*?|\n)*)<\/div>/"; 
preg_match_all($w1, $str, $matches); 
print_r($matches); 
?> 

は、あなたがにpreg_last_error()を実行する必要があります何が失敗したかを知る。

+0

エラー6:PREG_JIT_STACKLIMIT_ERROR –

+0

ini_set( "pcre.jit"、 "0");私が書いたコードのように、トップに。それは私のコンピュータ上で私のために働く。 – jeprubio

+0

@SławomirKudła 'pcre.jit'設定はPHP 7で導入されました。使用しているPHPのバージョンは? – MonkeyZeus

関連する問題