PHP Удалить строку первого URL-адреса и сообщить результаты

StackOverflow https://stackoverflow.com/questions/2068943

Вопрос

Russel Peter video: <a rel="nofollow" href="http://www.youtube.com/watch?v=2bP9tRhJRTw">www.youtube.com/watch?v=2bP9tRhJRTw</a> russel peters video blah blah. Turtles: <a href="http://turtles.com">turtles.com</a>

У меня есть строка, содержащая текст и теги с вложенными URL-адресами, как в приведенном выше примере.

Я хочу удалить ТОЛЬКО первый найденный тег

<a rel="nofollow" href="http://www.youtube.com/watch?v=2bP9tRhJRTw">www.youtube.com/watch?v=2bP9tRhJRTw</a>

и оттуда удалите URL-адрес внутри href="".

Но...я также хочу иметь возможность хранить текст вокруг вытащенного тега.

Я ищу что-то вроде этого в качестве конечного результата после всей зачистки:

$originalstring = "Russel Peter video: <a rel="nofollow" href="http://www.youtube.com/watch?v=2bP9tRhJRTw">www.youtube.com/watch?v=2bP9tRhJRTw</a> russel peters video blah blah. Turtles: <a href="http://turtles.com">turtles.com</a>";


$preurl = "Russel Peter video: ";

$atag = "<a rel="nofollow" href="http://www.youtube.com/watch?v=2bP9tRhJRTw">www.youtube.com/watch?v=2bP9tRhJRTw</a>";

$url = "http://www.youtube.com/watch?v=2bP9tRhJRTw";

$afterurl = " russel peters video blah blah. Turtles: <a href="http://turtles.com">turtles.com</a>";

СПАСИБО ЗА ПОМОЩЬ

ПРИМЕЧАНИЕ:прошу прощения, если я использовал неправильные термины.

Это было полезно?

Решение

$orgstring = 'Russel Peter video: <a rel="nofollow" href="http://www.youtube.com/watch?v=2bP9tRhJRTw">www.youtube.com/watch?v=2bP9tRhJRTw</a> russel peters video blah blah. Turtles: <a href="http://turtles.com">turtles.com</a>';
$s = explode(":",$orgstring,2);
$preurl = $s[0];
$href= explode('href="',$s[1]);
$url=preg_replace("/\">.*/","",$href[1]);
$atag = preg_replace("/\">.*/","",$s[1]);
$after=explode("</a>",$orgstring,2);
$afterurl=$after[1];
print "\$preurl: $preurl\n";
print "\$url: $url\n";
print "\$atag: $atag\n";
print "\$afterurl: $afterurl\n";

выход

$ php test.php
$preurl: Russel Peter video
$url: http://www.youtube.com/watch?v=2bP9tRhJRTw
$atag:  <a rel="nofollow" href="http://www.youtube.com/watch?v=2bP9tRhJRTw
$afterurl:  russel peters video blah blah. Turtles: <a href="http://turtles.com">turtles.com</a>

Другие советы

Вы можете использовать explode($tags, ' ', 2); чтобы получить массив из двух элементов, первый из которых — первый тег (URL-адрес), а второй — все остальные теги, если вы точно знаете, что они всегда будут разделены пробелами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top