使用共用樣式用 HTML 標籤取代連續的偽標籤
P粉926174288
P粉926174288 2023-09-01 18:44:45
0
1
577
<p>我有這條線</p> <pre class="brush:php;toolbar:false;">a[link], a[link] a [link] text text text a [link] text a[link] text</pre> <p>所以我想找到文本之前的第一個鏈接並對它們進行一次操作並以特殊樣式突出顯示它們(在本例中,可能或多或少有三個)並找到在文本之後的其他鏈接文字並以不同的樣式突出顯示它們。 </p> <p>我只能找到前三個鏈接,但我不知道我做得怎麼樣</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>我現在將嘗試給出一個說明性範例來說明所需的內容: 有這麼一段文字</p> <blockquote> <p>a[link1], a[link2] a[link3] 文本 文本 文本 a[link4] 文本 a[link5] 文本</p> </blockquote> <p>在本文中,有指定為 <code>a[...]</code> 的連結。將來,我需要替換這些連結並將其變為以下形式:</p> <blockquote> <p><a href="link1" class="style1">link1</a><a href="link2" class="style1">link2</a><a href=" link3" class="style1 ">link3</a> 文字文字文字<a href="link4" class="style2">link4</a> 文字<a href="link5" class="style2 ">link5</a> 文字</ p> </blockquote> <p>前三個連結的類別分配有值 <code>style1</code>。文字後面的連結已經有一個分配給 <code>style2</code> 的類別值。 </p> <p>一開始,文本前面可以有三個鏈接,四個甚至一個,文本後面可以有任意數量、任意順序的鏈接。 </p>
P粉926174288
P粉926174288

全部回覆(1)
P粉338969567

不要嘗試一次匹配所有內容。單獨匹配每個鏈接,然後迭代結果。為此,請使用 preg_match_all ;如果您想在每次匹配時進行替換,請使用 preg_replace_callback 。使用:

a\[(\w+)\]

應該要達成你的目標。

尚不清楚 [\s ]? 的目標是什麼,可以選擇允許空格或 。目前還不清楚連結後面的可選逗號和空格。保持簡單是最好的方法。

https://3v4l.org/2AvT1

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板