2012-04-07 3 views
1
<font size="+1"><font size="+2" color="green"><b>1.</b> 
</font><b>If no head injury is too trivial to be neglected, then:</b></font> 

In PHP preg_match oder preg_match_all ich den Text abrufen möchten „Wenn keine Kopfverletzungen zu trivial ist zu vernachlässigen, dann:“php - Verwendung von preg_match oder preg_match_all

Wie kann ich das tun? so etwas wie dieses

+0

Sie haben die Dokumentation für diese Funktionen lesen und verstehen, was die Unterschied zwischen ihnen ist, oder? – JJJ

+0

Sind Sie schon auf unsere [Suchfunktion] (http://stackoverflow.com/search) gestoßen? Fragen wie diese kamen früher auf. – mario

Antwort

-1

wird das Muster sein:

/<\s*b\s*>(.+)<\s*\/b\s*>/ 
+0

Dies auch viel "1." ... –

2

Code:

<?php 

$str = '<font size="+1"><font size="+2" color="green"><b>1.</b></font><b>If no head injury is too trivial to be neglected, then:</b></font>'; 
$pattern = "/font><b>(.+)<\/b>/"; 
preg_match($pattern,$str,$matches); 

echo $matches[1]; 

?> 

Ausgang:

Wenn keine Kopfverletzung zu trivial ist zu vernachlässigen dann:

0

Ich bin mir nicht sicher, unter welchen Bedingungen Sie die zu erfassende Zeichenfolge auswählen, warum wird 1. nicht erfasst, aber Ihre 2. Zeichenfolge? So lange, wie Sie erklären nicht, dass ich nur vermuten kann, so als Ausdruck:

/<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*>([^<]+)</\w+>/g

alle HTML-Tags entsprechen, das nur einen Textknoten enthält (Wich sollte Fall für xhtml, da <p>text<br /></p> wäre nicht gut geformt ...).

so <p>text</p><br>text2</br> wird abgestimmt werden und als Ergebnis wird der Text in capturegroup sein 1.

<\w+(?:\s+\w+=(?:(?:"[^"]*")|(?:'[^']*')))*\s*> exept jede Öffnung xhtml Tag

([^<]+) alle cahrs fangen fangen von < und steckte es in die capturegroup

</\w+> schließlich fängt den schließenden Tag ...

die g ist die globale Flagge, so dass der Ausdruck mehrere Ergebnisse fangen ...

Viel Glück mit diesem, wenn Sie etwas anderes brauchen Sie ein wenig genauer sein ...