2017-09-08 10 views
-1

preg_replaceは改行の下にあるものは検出できませんが、ブロックを削除したい場所(次のスクリプトタグで終わる日付20170908から始まる)からHTML文書があります。手動で改行を削除すると、reg式は機能しますが、プログラムでトリムする必要があります。 PHPでpreg_replaceは新しい行を処理できません

<script type="text/javascript" src="iam.js"></script><script 
     type="text/javascript"src="/search.js"></script><script 
     type="text/javascript" > /* 20170908 */ function uabpd4(){ 
     //some function 
    } 
    </script> 

私は次のようにします:

$content = trim(preg_replace('/\s+/', ' ', $content)); // just trying to get rid of newlines, but nothing from this works 
    $content = preg_replace("/\r|\n/is", "", $content); 
    $content = str_replace(array("\n", "\t", "\r"), '', $content); 
    $content = preg_replace("/\/\* $date(.*?)(((?!script>).)uabpd4(.*?script>))/is", "WORKS </script>", $content); 

ありがとうHTML文書の一部。

+0

https://regex101.com/r/E1yHVY/2 – RomanPerekhrest

+0

何をしようとしている正常に動作しますか? – Andreas

+0

はい、自分で改行を削除したためです。 – user3099909

答えて

0

あなたが正しいと分かっている場合は、JavaScriptの日付部分を削除したいと思っています。

これは1つの方法です。削除する部分に一致し、str_replaceを使用して削除します。

$re = '/.*script type.*<script.*type.*?>(.*?uabpd4.*})/s'; 
$str = '<script type="text/javascript" src="iam.js"></script><script 
     type="text/javascript"src="/search.js"></script><script 
     type="text/javascript" > /* 20170908 */ function uabpd4(){ 
     //some function 
    } 
    </script>'; 

preg_match($re, $str, $m); 

echo str_replace($m[1], "", $str); 

https://3v4l.org/ktcXo

+0

私の問題は私の正規表現ではなく、動作しますが、新しい行があるときには動作しません。問題はまだそこにある。 – user3099909

+0

これは新しい行でも機能します。私は問題を理解していない... https://3v4l.org/VhEKe – Andreas

関連する問題