#php
#php
Вопрос:
Я хочу удалить специальный символ @
из следующей строки
$string="Test <a href='/group/profile/1'>@Test User</a> another test <a href='/group/profile/2'>@User Test</a>";
Ожидаемый результат:
<a href='/group/profile/1'>Test User</a> another test <a href='/group/profile/2'>User Test</a>"
Здесь мне нужно проверить все теги привязки в строке, и мне нужно найти только теги привязки со словом profile в href и удалить @
из текста ссылки.Если в строке есть какой-либо @
внешний тег привязки, его не следует удалять, @
необходимо удалить только тег привязки.
Комментарии:
1. На выходе
"Test "
также отсутствует начальный символ; ожидаемый?
Ответ №1:
Используйте регулярное выражение:
$string = preg_replace('/(<a href.*profile.*>)@/U', '$1', $string);
Обратите внимание на модификатор ungreedy (U).
Ответ №2:
Попробуйте:
$string = <<<EOT
@Do not remove
Test <a href='/group/profile/1'>@Test User</a> another test <a href='/group/profile/2'>@User Test</a>
@metoo
EOT;
$string = preg_replace('/(<as . ?>.*?)(@)(.*?</a>)/','$1$3',$string);
var_dump($string);
Это может быть ошибкой для больших строк, хотя
http://us3.php.net//manual/en/function.preg-replace.php
http://us3.php.net/manual/en/reference.pcre.pattern.syntax.php
Ответ №3:
Попробуйте это:
//удалить @ из строки
$string=str_replace('@','',$string);
//кодирование строки с использованием функции base64_encode php
$string=base64_encode($string);
//декодировать строку с помощью функции base64_decode php
echo $string=base64_decode($string); //Expected output