2010-02-26 2 views
1

так, если у меня есть текст:найти часть слова, а затем заменить целое слово со строкой

«это будет действительно здорово»

и у меня есть игла «гои»

я хочу, чтобы найти собирается, а затем заменить его на ссылку

<a href="http://wwww.something.com/going">going</a> 

вы можете мне помочь? я очень плохо в регулярных выражениях

ответ

5

Вы можете использовать следующее регулярное выражение, чтобы соответствовать вашей частичной иглы плюс оставшуюся часть слова вокруг него:

$regex = '\b\w*' . $needle . '\w*\b'; 

затем передать, что preg_replace:

$newtext = preg_replace($regex, '<a href="http://www.something.com/$0">$0</a>', $oldtext); 
+0

Вы должны добавить группу захвата, а затем показать, как использовать это для создания ссылки;) – Franz

+0

На самом деле не нужна группа захвата - весь матч - это то, что вы хотели бы использовать в любом случае. – Amber

+0

Да, ну, вам все равно нужно заменить код, который вы добавили сейчас;) – Franz

0
$str = "this is going to be really great"; 
$s = explode(" ", $str); 
foreach ($s as $k=>$v) 
{ 
    if (strpos($v,"goi") !== FALSE) 
    { 
     $s[$k]= '<a href="http://wwww.something.com/' . $v . '">' . $v . "</a>"; 
    } 
} 
print_r(implode(" ", $s)); 
0
$str = preg_replace('/(\bgoi\w*)/', 
      '<a href="http://www.something.com/$1">$1</a>', $str) 

\b предназначено для использования на границе с текстом - без этого, оно будет соответствовать going в ongoing

Смежные вопросы