我有幾百個 html 檔案要在網站上顯示。它們都有以下格式的鏈接:
[My Test URL|https://www.mywebsite.com/test?param=123]
問題是一些網址被拆分了:
[My Test URL|https://www.mywebsite.c om/test?param=123]
我想用 HTML 對應部分替換所有這些:
<a href="https://www.mywebsite.com/test?param=123">My Test URL</a>
我知道使用正則運算式 "/[(.*?)]/" 我可以匹配括號,但是如何通過管道拆分,洗掉 URL 中的空格并將所有內容轉換為字串?
uj5u.com熱心網友回復:
如果您想WHITESPACES從字串中洗掉所有內容,php您需要做的是:
$string = str_replace(' ', '', $string);
$string你的字串在哪里url。
uj5u.com熱心網友回復:
我想這會為你做的
$html = "[My Test URL|https://www.mywebsite.c om/test?param=123] [My Test URL|https://www.mywebsite.com/test?param=123]";
$html = preg_replace_callback("|\[.*?\|.*?\]|", function($matches){
list($anchor, $link) = explode("|",substr($matches[0], 1, -1));
return "<a href='".str_replace(' ', '', $link)."'>$anchor</a>";
}, $html);
echo $html;
// echos <a href="https://www.mywebsite.com/test?param=123">My Test URL</a> <a href="https://www.mywebsite.com/test?param=123">My Test URL</a>
uj5u.com熱心網友回復:
如果您只想洗掉這些降價鏈接中 URL 部分中的(空白)空格,您可以僅使用preg_replace類似
preg_replace('~(?:\G(?!\A)|\[[^][|]*\|)[^][\s]*\K\s (?=[^][]*])~', '', $text)
請參閱正則運算式演示。詳情:
(?:\G(?!\A)|\[[^][|]*\|)-以前匹配或結束[,則比其他零個或多個字符[,]并且|然后將|炭[^][\s]*- 除[,]和空格之外的零個或多個字符\K- 丟棄到目前為止匹配的所有文本\s- 一個或多個空格(?=[^][]*])- 必須有零個或多個字符,然后是當前位置右側的[and]和 a之外的字符]。
如果要洗掉 URL 部分中的空格并將 Markdown 轉換為 HTML,最好使用preg_replace_callback:
$text = '[My Test URL|https://ww w.mywebsite.c om/t est?param=123]';
echo preg_replace_callback('/\[([^][|]*)\|([^][] )]/', function($m) {
return '<a href="' . str_replace(' ', '', $m[2]) . '">' . $m[1] . '</a>';
}, $text);
請參閱PHP 演示。詳情:
\[- 一個[字符([^][|]*)- 第 1 組:除[,]和之外的任何零個或多個字符|\|- 一個|字符([^][] )- 第 2 組:除]和之外的任何一個或多個字符[]- 一個]字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/399341.html
