PHP Удалить строку первого URL-адреса и сообщить результаты
Вопрос
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-адрес), а второй — все остальные теги, если вы точно знаете, что они всегда будут разделены пробелами.
Не связан с StackOverflow