试试这个
支持PHP 4和PHP 5
解决方案:
$string ='Bla bla %yada yada% bla bla %yada yada%';
// Count no of %
$count = substr_count($string,'%');
// Valid string pattern
if (0 == ($count % 2)) {
$urlString = $string;
// Iterate for each pair of % to make it link
for ($i=1; $i <= $count/2 ; $i++ ) {
$urlString = preg_replace('/%/', "<a href='link$i'>", $urlString, 1);
$urlString = preg_replace('/%/', "</a>", $urlString, 1);
}
}
// Invalid string pattern
else {
echo "Invalid string pattern";
}
// Display generated link
echo $urlString;
preg_replace函数的功能
工作
$str ='Bla bla %yada yada% bla bla %yada yada%';
$newStr = preg_replace('/%/', '', $str, 2);
echo $newStr;
// Output => Bla bla yada yada bla bla %yada yada%
$str ='Bla bla %yada yada% bla bla %yada yada%';
$newStr = preg_replace('/%/', '', strrev($str), 2);
$newStr = strrev($newStr);
echo $newStr;
// Output => Bla bla %yada yada% bla bla yada yada
$str ='Bla bla %yada yada% bla bla %yada yada%';
$newStr = preg_replace('/%/', '', $str);
echo $newStr;
// Output => Bla bla yada yada bla bla yada yada
参考
http://in1.php.net/preg%5Freplace
由于链接标识符是'%',它可能会以很多不同的方式导致很多错误。不过,您可以通过['strpos'](http://us2.php.net/manual/en/function.strrpos.php)函数获得创意。 – Jon 2013-04-24 08:04:12
匹配这个正则表达式:'/(%[^%] +%)/ g' – elclanrs 2013-04-24 08:04:36
你必须找到第一次发生然后替换这个,然后找到第二次发生然后替换这个 – 2013-04-24 08:04:40