2017-03-06 14 views
0

はのは、私はPHPで、このような文字列があるとしましょう:削除[PHP]

'<script type="text/javascript"> 
0jiaowdnalwdnijkawd 90janolaw 
</script>' 

は、どのように私は、この文字列からサラウンドスクリプトタグを剥ぎ取りに行きますか?私はどのように正規表現を見つけると置換するのか知っていますが、これは私の正規表現のスキルが同等ではないので、ひどく非効率な正規表現で私を残します。

私が必要とする唯一のものは、次のとおりです。

'0jiaowdnalwdnijkawd 90janolaw' 

私はstrip_tags()を使用してみましたが、この意志はバグがあると私はそれがしたいように動作しません。

+0

mmmhいいえ 'regex'いいえ' strip_tags'は残っていません... – JustOnUnderMillions

+0

ウェブサイトが幾分構造化されている場合、私は個人的に機能と機能の間に文字列を使用します。あなたのケースではおそらく最善の解決策ではありませんが、他の2つのものの中に何かを取り入れる必要があるときは、間違いなく使いやすいものです。 http://stackoverflow.com/questions/5696412/get-substring-between-two-strings-php – Dimi

+0

'strip_tags'は'私が望むように動く 'のはどうですか?https://eval.in/749057はそうではありませんそれはあなたが望んだことですか? – chris85

答えて

1

正規表現positive lookahead/lookbehindを使用して)それを行う必要があります。

(?s)(?<=">\n).*?(?=<\/script>) 

が見regex demo/explanation

PHPdemo

$reg = '/(?s)(?<=">\n).*?(?=<\/script>)/'; 
$str = '<script type="text/javascript"> 
0jiaowdnalwdnijkawd 90janolaw 
</script>'; 
preg_match_all($reg, $str, $matches); 
print_r($matches); 
1

次のように:

$returnValue = preg_replace('#<script[^>]*>([^<]+)</script>#', '$1', $string); 
1

この<(\w+).*>\s*(.*)\s*<\/\1>を試してみてください。完全な説明はhttps://regex101.com/r/88NrTa/2をご覧ください。

regexは2つのキャプチャグループを取得しますが、最初は有用ではありません(htmlタグの名前を取得します)。しかし、2番目のタグはタグ間のテキストをキャプチャします。だから、あなたはテキストであるためには、2番目のキャプチャグループ(純粋な正規表現で\2)を取得する必要があります。

PHPでこれを行うことをやめようとするなら、その解決策は悪くないようです:PHP regex groups captures

関連する問題