Это легко.
<?php
$string = "Hello! How <a href=\"#\">are</a> you?!";
$stringTwo = "Hello! how are you?!";
function turnTheWordIntoALink($string, $word, $link) {
if(isLink($string)) {
return $string;
} else {
$string = str_replace($word, "<a href=\"" . $link . "\">" . $word . "</a>", $string);
return $string;
}
}
function isLink($string) {
return preg_match("/(<a href=\".\">)/", $string);
}
echo turnTheWordIntoALink($string, 'are', 'http://google.com');
echo turnTheWordIntoALink($stringTwo, 'are', 'http://google.com');
Выход:
Первая функция выхода: Hello! How <a href="#">are</a> you?!
Вторая функция выхода: Hello! how <a href="http://google.com">are</a> you?!
Альтернатива:
Если вы хотите, чтобы не обнаружить <a>
меток, которые были закрыты, вы можете использовать этот альтернативный код:
$stringThree = "Hello! how <a href=\"#\">are you?!";
function turnTheWordIntoALink($string, $word, $link) {
if(isLink($string)) {
return $string;
} else {
$string = str_replace($word, "<a href=\"" . $link . "\">" . $word . "</a>", $string);
return $string;
}
}
function isLink($string) {
return preg_match("/(<a href=\".\">)+(.)+(<\/a>)/", $string);
}
echo turnTheWordIntoALink($stringThree, 'are', 'http://google.com') . "\n";
Это дает выход: Hello! how <a href="#"><a href="http://google.com">are</a> you?!
Я вижу опечатку. '?!' Тег не был закрыт. Это целенаправленно? –
см. Это: http: //matthewjamestaylor.com/blog/convert-special-characters-to-html-entities-between-code-tags –
Спасибо, было правильно. – shozdeh