Определить текст между некоторыми тегами - PullRequest
1 голос
/ 06 февраля 2011

Я пытаюсь обнаружить текст между 3 или 4 тегами, и я понятия не имею, как - ИСПОЛЬЗУЯ PHP.Я знаю, что я должен использовать регулярные выражения, но это слишком сложно для моего ума: X

Если вы можете объяснить мне, как это сделать / дать мне пример того, что мне нужно, это будет здорово!

Я пытаюсь обнаружить код между <script> tag>, что означает, что если я получу <script type="text/javascript">, он также обнаружит.если есть <script src="...">, то он не обнаружит текст между (не должно быть текста между).

то же самое со скриптом ^, если есть <style type="text/css">, он обнаружит текст между слишком

, и я тожехочу обнаружить текст между style = "обнаружить текст здесь" artitube.

Последний тег, между которым я хочу разместить текст: <?php ?>.(php также может быть в верхнем регистре, поэтому я не хочу, чтобы регулярное выражение учитывало регистр).

Спасибо за помощников !!!

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Используя регулярные выражения, вы можете написать что-то вроде:

<?php
$html = <<<EOF
<script type="text/javascript">
    function xyz() { alert('some alert'); }
</script>
EOF;

preg_match('/<script.*>(.*)<\/script>/sU', $html, $matches);

var_dump($matches)
?>
2 голосов
/ 06 февраля 2011

Регулярные выражения не лучше всего подходят для анализа HTML.По понятным причинам см. Вопрос Можете ли вы привести некоторые примеры того, почему трудно анализировать XML и HTML с помощью регулярного выражения?

У вас будетпроще загружать HTML в классы DOM XML , тогда вы можете выполнять запросы XPath для извлечения нужных тегов.

Например, попробуйте что-то подобное, чтобы получить все <script>теги, которые не имеют атрибута src ...

$doc = new DOMDocument();
$doc->loadHTMLFile("myfile.html");

$xpath=new DOMXPath($doc);

//find script elements which don't have a src attribute
$scriptNodes=$xpath->query("script[not(@src)]");
foreach ($scriptNodes as $scriptNode) {

    //do something here...

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...