Verwenden Sie gemeinsame Stile, um aufeinanderfolgende Pseudo-Tags durch HTML-Tags zu ersetzen
P粉926174288
2023-09-01 18:44:45
<p>Ich habe diese Zeile</p>
<pre class="brush:php;toolbar:false;">a[link], a[link] a [link] text text text a [link] text a[link] text</pre>
<p>Also möchte ich den ersten Link vor dem Text finden und eine Operation an ihnen durchführen und sie in einem speziellen Stil hervorheben (in diesem Fall vielleicht mehr oder weniger drei) und die anderen Links nach dem Text finden und hervorheben sie in verschiedenen Stilen. </p>
<p>Ich konnte nur die ersten drei Links finden, aber ich weiß nicht, wie gut ich das gemacht habe</p>
<pre class="brush:php;toolbar:false;"><?php
$re = '/^(a[(w+[s+]?)+],?s?)+/iu';
$str = 'a[link], a[link] a[link] text text text a[link] text a[link] text';
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
var_dump($matches);
?></pre>
<hr />
<p>Ich werde nun versuchen, ein anschauliches Beispiel dafür zu geben, was erforderlich ist:
Es gibt einen solchen Absatz</p>
<blockquote>
<p>a[link1], a[link2] a[link3] Text Text Text a[link4] Text a[link5] Text</p>
</blockquote>
<p>In diesem Artikel gibt es Links mit der Bezeichnung <code>a[...]</code>. In Zukunft muss ich diese Links ersetzen und in folgende Form ändern: </p>
<blockquote>
<p><a href="link1" class="style1">link1</a><a href="link2" class="style1">link2</a><a href=" link3" class="style1 ">link3</a> Text Text Text<a href="link4" class="style2">link4</a> Text<a href="link5" class="style2 "> ;link5</a> text</ p>
</blockquote>
<p>Den ersten drei verknüpften Klassen wird der Wert <code>style1</code> zugewiesen. Dem Link, der auf den Text folgt, ist <code>style2</code> bereits ein Klassenwert zugewiesen. </p>
<p>Zunächst können drei Links vor dem Text stehen, vier oder sogar einer, und nach dem Text können beliebig viele Links in beliebiger Reihenfolge stehen. </p>
不要尝试一次匹配所有内容。单独匹配每个链接,然后迭代结果。为此,请使用
preg_match_all
;如果您想在每次匹配时进行替换,请使用preg_replace_callback
。使用:应该实现你的目标。
尚不清楚
[\s+]?
的目标是什么,可以选择允许空格或+
。还不清楚链接后面的可选逗号和空格。保持简单是最好的方法。https://3v4l.org/2AvT1