如何在PHP中找到字符串模式并进行修改?

时间:2013-07-10 10:38:10

标签: php string replace

我想将#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有内置函数吗?

由于

3 个答案:

答案 0 :(得分:1)

$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>

答案 1 :(得分:1)

<?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>';

}

?> 

答案 2 :(得分:1)

使用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,否则:)

另请参阅:urlencode() htmlspecialchars()