Beispiel:Wrap ungeöffneter Text in <span>
<div>foo</div>
<p>bar</p>
Unwrapped text
, was ich will:
<div>foo</div>
<p>bar</p>
<span>Unwrapped text</span>
Wie dies erreichen ohne auf neue Linien verlassen?
Beispiel:Wrap ungeöffneter Text in <span>
<div>foo</div>
<p>bar</p>
Unwrapped text
, was ich will:
<div>foo</div>
<p>bar</p>
<span>Unwrapped text</span>
Wie dies erreichen ohne auf neue Linien verlassen?
Ich würde keine regulären Ausdrücke für HTML verwenden.
Sie können es mit phpQuery
$doc = phpQuery::newDocument($html);
$doc->contents()->not($doc->children())->wrap("<span>");
$html = $doc->html();
Hat es allerdings nicht versuchen.
Extract Token aus dem String wie zum Beispiel: <div>
, foo
, </div>
, <p>
, bar
, </p>
, Unwrapped text
. Sie können dies mit regulären Ausdrücken tun. Dann
for each token do
if token is opening tag
push token on stack
else if token is closing tag (and matching opening tag is ontop of stack)
pop token from stack
else if token is text and stack is not empty
ignore token (continue)
else if token is text and stack is empty
wrap token with <span>
Dies wird für beliebige verschachtelte XML
-Strings arbeiten.
Zuerst müssen Sie definieren, was Sie mit "wrap" Text meinen. Weil der gesamte Code mindestens mit Tags verpackt werden sollte. Zweitens, was meinst du, ohne auf neue Linien angewiesen zu sein? Dritter und letzter, warum ist das unter PHP/Regex getaggt? Wenn du tatsächlich einen PHP-Code möchtest, kannst du uns bitte zeigen, was du schon versucht hast? –
Der übliche Kommentar für Leute, die HTML mit regulären Ausdrücken analysieren wollen: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contented-tags/1732454#1732454 – Basti
Kuriositäten was passiert für '
Text
More text