Принять участие большой текст - PullRequest
0 голосов
/ 22 апреля 2011

Допустим, у нас есть строка ($ text)

I will help you out, if <b>you see this message and never forget</b> blah blah blah

Я хочу взять текст из "<b>" в "</b>" в новую строку ($ text2) Как это можно сделать?

Я ценю любую помощь, которую могу получить. Спасибо!

Edit: Я хочу взять код, подобный этому.

<embed type="application/x-shockwave-flash"></embed>

Ответы [ 3 ]

2 голосов
/ 22 апреля 2011

Если вы хотите только первое совпадение и не хотите совпадать с чем-то вроде <b class=">, будет работать следующее:

ОБНОВЛЕНО для комментария:

$text = "I will help you out, if <b>you see this message and never forget</b> blah blah blah";
$matches = array();
preg_match('@<b>.*?</b>@s', $text, $matches);
if ($matches) {
    $text2 = $matches[0];
    // Do something with $text2
}
else {
    // The string wasn't found, so do something else.
}

Но для чего-то более сложного, вы действительно должны проанализировать это как DOM согласно комментарию Марка Б.

1 голос
/ 22 апреля 2011

Используйте этот плохой мофо: http://fr2.php.net/domdocument

$dom = new DOMDocument();
$dom->loadHTML($text);

$xpath = new DOMXpath($dom);
$nodes = $xpath->query('//b');

Здесь вы можете либо пройтись по каждой из них, либо, если вы знаете, что есть только одна, просто захватите значение.

$text1 = $nodes->item(0)->nodeValue;
0 голосов
/ 22 апреля 2011
strip_tags($text, '<b>');

извлечет только части строки между <b> </b>

Если это поведение, которое вы ищете.

...