我有一个像这样的字符串:
$string = "some text
http://dvz.local/index/index/regionId/28
http://stuff.kiev.ua/roadmap_page.php http://192.168.3.192/roadmap_page.php
http://192.168.3.192/roadmap_page.php#qwe";
需要获取所有链接。
我试过这种方式:/http:\/\/(.*)[|\s]?/
返回:
array(2) {
[0] =>
array(3) {
[0] =>
string(42) "http://dvz.local/index/index/regionId/28\r\n"
[1] =>
string(77) "http://stuff.kiev.ua/roadmap_page.php http://192.168.3.192/roadmap_page.php\r\n"
[2] =>
string(41) "http://192.168.3.192/roadmap_page.php#qwe"
}
[1] =>
array(3) {
[0] =>
string(34) "dvz.local/index/index/regionId/28\r"
[1] =>
string(69) "stuff.kiev.ua/roadmap_page.php http://192.168.3.192/roadmap_page.php\r"
[2] =>
string(34) "192.168.3.192/roadmap_page.php#qwe"
}
}
编辑1: 预计有:
array(2) {
[0] =>
array(3) {
[0] =>
string(42) "http://dvz.local/index/index/regionId/28"
[1] =>
string(77) "http://stuff.kiev.ua/roadmap_page.php"
[2] =>
string(77) "http://192.168.3.192/roadmap_page.php"
[3] =>
string(41) "http://192.168.3.192/roadmap_page.php#qwe"
}
[1] =>
array(3) {
[0] =>
string(34) "dvz.local/index/index/regionId/28"
[1] =>
string(69) "stuff.kiev.ua/roadmap_page.php"
[2] =>
string(69) "192.168.3.192/roadmap_page.php"
[3] =>
string(34) "192.168.3.192/roadmap_page.php#qwe"
}
}
答案 0 :(得分:3)
试试这个:
/http:\/\/([^\s]+)/
答案 1 :(得分:2)
试试这个:
preg_match_all('|http://([^\s]*)|', $string, $matches);
var_dump($matches);
答案 2 :(得分:0)
所有来自文本的链接
http [s]?[^ \ s] *
答案 3 :(得分:0)
许多页面仅具有相对于主文档的相对链接(因此没有http(s):// ...进行解析),对于以下情况,它们可以很好地被<form action="addsurvey.php" method="post">
<input type="text" name="surveyname">
<input type="text" name="question" placeholder="First Question">
<br>
<input type="text" name="answer[1]" value="">
<input type="text" name="answer[2]" value="">
<input type="text" name="answer[3]" value="">
<br>
<input type="submit" name="submit">
</form>
属性分割:
href
或更简单:
preg_match_all('|href="([^\s]*)"><\/a>|', $html, $output_array);
示例输出:
preg_match_all('|href="(.*?)"><\/a>|', $html, $output_array);