Die Verwendung regulärer Ausdrücke zum Abgleichen von HTML-Titeln ist eine häufige Operation in PHP. Der Titel einer Webseite wird normalerweise verwendet, um den allgemeinen Inhalt der Seite anzuzeigen, damit Benutzer sie leichter verstehen und durchsuchen können. In einigen Fällen müssen wir alle Titel zur späteren Verarbeitung aus HTML extrahieren.
In diesem Artikel erfahren Sie, wie Sie mit regulären PHP-Ausdrücken schnell und effektiv alle Titel in HTML extrahieren.
1. Klassifizierung von HTML-Titeln
In HTML-Seiten gibt es viele Arten von Titeln, die mithilfe der folgenden Tags definiert werden können:
2. Reguläre PHP-Ausdrücke
Reguläre Ausdrücke sind ein leistungsstarkes Such- und Ersetzungstool, mit dem Textzeichenfolgen effektiv verarbeitet werden können. In PHP können wir preg_match(), preg_match_all(), preg_replace() und andere Funktionen verwenden, um den Vergleich regulärer Ausdrücke zu implementieren.
Die folgenden sind einige häufig verwendete reguläre Ausdruckssyntax:
Schauen wir uns zunächst an, wie man den Titel in h1 ~ h6-Tags abgleicht. Angenommen, wir haben den folgenden HTML-Code:
<!DOCTYPE html> <html> <head> <title>HTML 标题示例</title> </head> <body> <h1>这是一级标题</h1> <h2>这是二级标题</h2> <h3>这是三级标题</h3> <h4>这是四级标题</h4> <h5>这是五级标题</h5> <h6>这是六级标题</h6> </body> </html>
/<h[1-6]>(.*?)</h[1-6 verwenden ] >/
, um alle Titel zu extrahieren: $html = file_get_contents('example.html'); preg_match_all('/<h[1-6]>(.*?)</h[1-6]>/', $html, $matches); print_r($matches[0]);
/<h[1-6]>(.*?)</h[1-6]>/
im regulären Ausdruck bedeutet, dass das Innere von h1 ~ h6-Tags abgeglichen wird Zeichenfolge, wobei (.*?)
ein nicht gieriges Muster darstellt, das mit möglichst wenigen Zeichen übereinstimmt.
Das Ausgabeergebnis lautet wie folgt: /<h[1-6]>(.*?)</h[1-6]>/
,来提取其中所有的标题:
Array ( [0] => <h1>这是一级标题</h1> [1] => <h2>这是二级标题</h2> [2] => <h3>这是三级标题</h3> [3] => <h4>这是四级标题</h4> [4] => <h5>这是五级标题</h5> [5] => <h6>这是六级标题</h6> )
上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match_all() 函数和正则表达式 /<h[1-6]>(.*?)</h[1-6]>/
,来匹配其中的 h1 ~ h6 标题。
正则表达式中的 /<h[1-6]>(.*?)</h[1-6]>/
,表示匹配 h1 ~ h6 标签内部的字符串,其中 (.*?)
表示非贪婪模式,匹配尽量少的字符。
输出结果如下:
<!DOCTYPE html> <html> <head> <title>HTML 标题示例</title> </head> <body> <h1>这是一级标题</h1> <p>段落内容</p> <h2>这是二级标题</h2> <p>段落内容</p> </body> </html>
可以看到,我们成功匹配了 HTML 页面中所有的 h1 ~ h6 标题。
接下来,我们来看如何匹配 title 标签中的网页标题。假设我们有以下的 HTML 代码:
$html = file_get_contents('example.html'); preg_match('/<title>(.*?)</title>/', $html, $matches); echo $matches[1];
我们可以使用 preg_match() 函数和正则表达式 /<title>(.*?)</title>/
,来提取其中的网页标题:
HTML 标题示例
上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match() 函数和正则表达式 /<title>(.*?)</title>/
,来匹配其中的 title 标签。
正则表达式中的 /<title>(.*?)</title>/
,表示匹配 title 标签内部的字符串,其中 (.*?)
表示非贪婪模式,匹配尽量少的字符。
输出结果如下:
<!DOCTYPE html> <html> <head> <title>HTML 标题示例</title> <meta charset="utf-8"> <meta name="keywords" content="HTML,标题,元数据"> <meta name="description" content="HTML 标题示例 - 一个简单的 HTML 页面,包含多种类型的标题和元数据。"> </head> <body> <h1>这是一级标题</h1> <p>段落内容</p> <h2>这是二级标题</h2> <p>段落内容</p> </body> </html>
可以看到,我们成功匹配了 HTML 页面的网页标题。
最后,我们来看如何匹配 meta 标签中的元数据。假设我们有以下的 HTML 代码:
$html = file_get_contents('example.html'); preg_match_all('/<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/', $html, $matches); print_r($matches[0]);
我们可以使用 preg_match_all() 函数和正则表达式 /<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/
,来提取其中的关键词元数据:
Array ( [0] => <meta name="keywords" content="HTML,标题,元数据"> )
上述代码中,我们使用 file_get_contents() 函数读取 HTML 文件内容,然后使用 preg_match_all() 函数和正则表达式 /<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/
,来匹配其中的关键词元数据。
正则表达式中的 /<metas+([^>]+s)*names*=s*(['"]?)keywords([^>]+s)*>/
rrreee
Als nächstes schauen wir uns an, wie der Titel der Webseite im Titel-Tag abgeglichen wird. Angenommen, wir haben den folgenden HTML-Code:
rrreeeWir können die Funktion preg_match() und den regulären Ausdruck /<title>(.*?)</title>/
verwenden, um ihn aus dem Web zu extrahieren Seitentitel:
/<title>(.*?) </title> /
passend zum Titel-Tag. 🎜🎜/<title>(.*?)</title>/
im regulären Ausdruck bedeutet, dass die Zeichenfolge im Titel-Tag abgeglichen wird, wobei (.*?) zeigt den nicht gierigen Modus an, bei dem so wenig Zeichen wie möglich gefunden werden. 🎜🎜Das Ausgabeergebnis lautet wie folgt: 🎜rrreee🎜Wie Sie sehen können, haben wir den Webseitentitel der HTML-Seite erfolgreich abgeglichen. 🎜<ol start="3">🎜Meta-Tag🎜🎜🎜Schauen wir uns abschließend an, wie die Metadaten im Meta-Tag abgeglichen werden. Angenommen, wir haben den folgenden HTML-Code: 🎜rrreee🎜Wir können die Funktion preg_match_all() und den regulären Ausdruck <code>/<metas+([^>]+s)*names*=s*(['"] verwenden. ? )keywords ([^>]+s)*>/
zum Extrahieren der Schlüsselwortmetadaten: 🎜rrreee🎜Im obigen Code verwenden wir die Funktion file_get_contents(), um den Inhalt der HTML-Datei zu lesen, und dann Verwenden Sie die Funktion preg_match_all() und den regulären Ausdruck /<metas+([^>]+s)*names*=s*(['"]?)keywords ([^>]+s)* >/
, um mit den Schlüsselwort-Metadaten übereinzustimmen. 🎜🎜/<metas+([^>]+s)*names*=s*(['"]?)keywords ([^>]+s)*> in regulären Ausdrücken / Code> bedeutet, dass die Zeichenfolge im Meta-Tag abgeglichen wird, deren Namensattribut Schlüsselwörter ist. Das Ausgabeergebnis lautet wie folgt: 🎜rrreee🎜Sie können sehen, dass wir die Schlüsselwort-Metadaten erfolgreich auf der HTML-Seite abgeglichen haben In diesem Artikel wird erläutert, wie Sie reguläre PHP-Ausdrücke verwenden, um verschiedene Arten von Titeln in HTML-Seiten abzugleichen. Durch die Verwendung von preg_match(), preg_match_all(), preg_replace() und anderen Funktionen in Kombination mit der Syntax und den Regeln regulärer Ausdrücke erhalten wir relevante Informationen in HTML Der Code kann für die anschließende Verarbeitung und Analyse einfach extrahiert werden 🎜
Das obige ist der detaillierte Inhalt vonRegulärer PHP-Ausdruck: So passen Sie alle Überschriften in HTML an. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!