Удалите теги с начала и конца строки с помощью PHP - PullRequest
3 голосов
/ 13 февраля 2012

Мне нужно получить строку без тегов в начале и конце строки.Я знаю strip_tags, но, как вы знаете, он удаляет все теги.Например:

<span class="note">
  <span></span>This is my text <strong>Hello world</strong> 
</span>

В этом примере я хочу сохранить теги <strong>.Важно знать, что я хочу безусловное решение, потому что теги могут быть разными.Я уже знаю, что вы можете исключить теги с помощью strip_tags (это не то, что я хочу знать), но это не так.

Кто-нибудь знает быстрое решение этого, например, замена выражения reg или что-то(вещь, в которой я не очень хорош).Не могу найти такую ​​вещь в сети, поэтому я спрашиваю это здесь.

Спасибо за вклад.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

DOMDocument было бы удобно для этого ...

$dom = new DOMDocument;

$dom->loadHTML($html);

$html = '';

foreach($dom->getElementsByTagName('body')->item(0)->firstChild->childNodes as $node) {
    $html .= trim($dom->saveHTML($node));
}

echo $html;

CodePad .

Если бы вы не умели использовать регулярные выражения, вы могли бы использовать ...

$html = preg_replace('/^\s*<[^>]+>\s*|\s*<\/[^>]+>\s*\z/', '', $html);

CodePad .

Обратите внимание, что тег HTML с атрибутом, содержащим >, не сможет выполнить регулярное выражение. Вот почему я бы предпочел решение DOMDocument.

Оба эти решения удаляют начальные и конечные пробельные текстовые узлы. Если это нежелательно, отбросьте trim() из первого примера и \s* из второго примера.

0 голосов
/ 13 февраля 2012

Я бы пошел с простой функцией, вместо того, чтобы вызывать классы DOM - они работают медленнее.
Это то, что я обычно делаю: http://codepad.viper -7.com / RVKmAG

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