У меня есть файл, который получает контент с моего другого сайта. Это много:
<script> [random] string 1 </script> <script> [random] string 2 </script> .... <script> [random] string n </script> <script type="text/javascript"> must keeping script </script> <script type=text/javascript'> must keeping script </script>
Я хочу REMOVE <script>
и </script>
но KEEP контент между ними «[random] string …» с использованием PHP.
Примечание: str_replace может удалить их, но может сделать другие скрипты <script type="text/javascript">must keeping</script>
и <script type='text/javascript'>must keeping</script>
. Он потеряет тег </script>
должен содержать скрипт
Спасибо за помощь
// РЕШЕННО:
$content = preg_replace('/(<script>)(.*?)(<\/script>)/s', '$2', $content);
В любом случае, спасибо за помощь
Попробуй это
$content = " <script> [random] string 1 </script> <script> [random] string 2 </script> .... <script> [random] string n </script> "; $content = str_replace(array("<script>", "</script>"), "", $content);
EDIT: Поскольку вы хотите избавиться от <script></script>
и в то же время сохранить <script type="text/javascript"></script>
и потому что использование regexp для решения подобных проблем – плохая идея затем попытайтесь использовать DOMDocument
следующим образом:
$dom = new DOMDocument(); $content = " <script> [random] string 1 </script> <script> [random] string 2 </script> .... <script> [random] string n </script> <script type='text/javascript'> must keeping script </script> <script type='text/javascript'> must keeping script </script> "; $dom->loadHTML($content); $scripts = $dom->getElementsByTagName('script'); foreach ($scripts as $script) { if (!$script->hasAttributes()) { echo $script->nodeValue . "<br>"; } }
Это приведет к выводу:
[случайная] строка 1
[случайная] строка 2
[случайная] строка n
<?php $text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>'; echo strip_tags($text); ?>
для получения дополнительной информации о стрип-тегах см. http://php.net/manual/en/function.strip-tags.php
Если содержимое имеет строковый тип, вы можете использовать str-replace или str-ireplace
Затем попробуйте функцию strip_tags http://php.net/manual/en/function.strip-tags.php ?
если файл test.txt, используйте этот код
<?php $myFile = "test.txt"; $fh = fopen($myFile, 'r'); $theData = fread($fh, 5000); echo str_replace("</script>","",str_replace("<script>","",$theData)); fclose($fh); ?>