如何在php中将字符串替换为锚标记

时间:2014-08-18 05:49:09

标签: php regex

我遇到了如何将文本替换为文本所具有的锚标记的问题 也可以在标签的href属性中使用类似文本。

文字应显示如下:

//input
  $string = "text1 text2 text23 text24";
  $tofind   = "text2";
//output
  <a href="welcome_to_text2.php">text2</a>

我使用下面的代码,但输出错误:

<?php
  $fulltext = "text1 text2 text23 text24";
  $tofind   = "text2";
  $string   = explode(" " , $str); 
  foreach($string as $value){ 
     $href     = "welcome_to_{$tofing}.php";
     $fulltext = preg_replace('/('.preg_quote($tofind, '/').')/i', 
               "<a href=\"{$href}\">"."\\1"."</a>", $fulltext );
  }
   echo $fulltext ;  
   //it outputs  <a href="welcome_to_<a href=""">text2</a>
?>

text23和text24也被替换,因为text2出现在两个字符串上。我只是想单独替换text2,因为它匹配。 有人知道吗?感谢

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码:

$fulltext = "text1 text2 text23 text24";
$tofind   = "text2";
$array   = explode(" " , $fulltext);
$fileKey = array_search($tofind, $array);
// if giving file does not exist use 'text1' as default.
$fileName = isset($array[$fileKey]) ? $array[$fileKey] : 'text1';

echo sprintf('<a href="welcome_to_%s.php">%s</a>', $fileName, $fileName);

或者,如果您想要数组中所有元素的构建链接:

$fulltext = "text1 text2 text23 text24";
$tofind   = "text2";
$array   = explode(" " , $fulltext);
$text = '';
foreach ($array as $value) {
  $text .= sprintf('<a href="welcome_to_%s.php">%s</a><br />', $value, $value);
}
echo $text;

希望它有所帮助。