我想將字符串的子串以#123
的形式轉換爲<a href='show.php?id=123'>#123</a>
。 所以讓他們鏈接。因此字符串"take a look at #42"
轉換爲"take a look at <a href='show.php?id=42'>#42</a>"
。如何找到一個字符串模式並在PHP中修改它?
php是否有內置函數?
感謝
我想將字符串的子串以#123
的形式轉換爲<a href='show.php?id=123'>#123</a>
。 所以讓他們鏈接。因此字符串"take a look at #42"
轉換爲"take a look at <a href='show.php?id=42'>#42</a>"
。如何找到一個字符串模式並在PHP中修改它?
php是否有內置函數?
感謝
$pattern = '/([^#]+)(#[\d]+)([^#]+)/';
$str = 'Take a look at #42';
if (preg_match($pattern, $str, $matches)){
echo $matches[1]."<a href='show.php?id=".substr($matches[2], 1)."'>". $matches[2].'</a>'.$matches[3];
}
此輸出:
Take a look at <a href="show.php?id=42">#42</a>
<?php
$string="take a look at #42";
if (preg_match('/#[0-9]+/', $string, $matches)){
echo "<a href='show.php?id=".substr($matches[0], 1)."'>". substr($matches[0], 1).'</a>';
}
?>
使用preg_replace_callback()
進行更換:
echo preg_replace_callback('/#(\w+)/', function($match) {
return sprintf('<a href="show.php?id=%s">%s</a>',
$match[1],
'#' . $match[1]
);
}, 'take a look at #42');
// look at <a href="show.php?id=42">#42</a>
雖然不是嚴格此處需要,確保你逃避你HTML公關operly否則:)
這基本上回答所以我就張貼作爲評論:http://3v4l.org/Y65uW – Passerby
是這個工程。謝謝大家 ! – jeff