Удалить условный тег href из строки php

0

У меня есть такой сценарий.

$str = "this is a bet and he is <a href=''>Mansoon</a> and he please search on <a href='http://www.google.com'>Google</a> and say he <a href=''>Yammy</a>";

Я хочу удалить все теги href из строки с пустым href. Можете ли вы, пожалуйста, взглянуть на это.

Выход такой

$str = "this is a bet and he is Mansoon and he please search on <a href='http://www.google.com'>Google</a> and say he Yammy";

Большое спасибо

  • 1
    herf или href ?
  • 0
    Не могли бы вы показать, что вы пытались?
Показать ещё 5 комментариев
Теги:

4 ответа

4

попробуйте это: обновите его, чтобы заполнить все случаи исключения:

$re = "/(<a[^href]*href=[\"']{2}[^>]*>)([^<>]*|.*)(<\\/a>)/m";
$str = "this is a bet and he is <a id=\"sss\" href='' dfsd fdg >Mansoon</a> and he please search on <a href='http://www.google.com'>Google</a> and say he <a href=''>Yammy</a> \n<a href=''> <i>Yammy </i> <br/> </a>\n\nthis is a bet and he is Mansoon and he please search on <a href='http://www.google.com'>Google</a> and say he Yammy";
$subst = "$2";

$result = preg_replace($re, $subst, $str);

живая демонстрация

  • 0
    За исключением: href='" или <a href=''><i>Yammy</i></a> или другого html в href .
  • 0
    спасибо: теперь я обновил свой ответ.
Показать ещё 1 комментарий
0

Вы можете использовать:

$str = "this is a bet and he is <a href=''>Mansoon</a> and he please search on <a href='http://www.google.com'>Google</a> and say he <a href=''>Yammy</a>";
$pattern = '/<a[^>]*?href=(?:\'\'|"")[^>]*?>(.*?)<\/a>/i';
$replacement = '$1';
echo preg_replace($pattern, $replacement, $str);

Тестовое регулярное выражение: здесь

0

Это <a\h+href=(['"])\1>([^<>]*)<\/a> регулярного выражение будет соответствовать всем якорям тегов, которые имеют пустое href значения. Замена соответствует <a> теги с $2 даст вам желаемый результат.

DEMO

<?php
$str = "this is a bet and he is <a href=''>Mansoon</a> and he please search on <a href='http://www.google.com'>Google</a> and say he <a href=''>Yammy</a>";
echo preg_replace('~<a\h+href=([\'"])\1>([^<>]*)<\/a>~', '$2', $str);
?>

Вывод:

this is a bet and he is Mansoon and he please search on <a href='http://www.google.com'>Google</a> and say he Yammy

\h+ соответствует одному или нескольким горизонтальным символам пробела.

  • 0
    это не будет работать, если есть пробел, такой как <a ***** href=""> sdfsfs </a>
  • 0
    сейчас не будет. Есть ли вероятность появления одного или нескольких пробелов перед href ?
0

Это регулярное выражение будет работать для вас

<a[^>]*herf='*'[^>]*>[^>](.*?)<\/a> //works well even after space anywhere
  • 0
    Лалит, но как я могу сохранить Мансун или что-то подобное, как объяснено в вопросе. Я могу заменить это пустой или конкретной строкой
  • 0
    хорошо, делаю упражнение для вас подождать
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню