-1
for ($i=1; $i<=100; $i++) {
    $i++;    
    $word1 = '"';
    $word2 = '"';
    preg_match('/'.preg_quote($word1).'(.*?)'.preg_quote($word2).'/is', $html, $match);
    echo $match[1]."<br>";
    $main = explode('"',$html);
    $html = $main[1];
    //echo $main[1];
}

这是我当前使用的代码。但不工作。我想做的就是在“。链接“文本”或链接src =“”获取src之间。我可以轻松地在“之间获取”,但我怎样才能得到所有匹配的单词?我想创建一个函数来完成这项工作。像 Get_Text($result_array,$start_tag,$end_tag,$html); 其中 $result_array 是结果,$start_tag 是起始词链接 src=",$end_tag 是结束词,如 "。$html 是我要在其中搜索的文本编辑:

单词 1 是 (src=")

第 2 个字是 (")

html is (bla bla bla <iframe src="http://website.domain"></iframe> bla bla bla <embed src="url"></embed>)

现在结果应该是 $result[1] = " http://website.domain "; $result[2] = "网址"

4

1 回答 1

1
function get_text_between ($start, $end, $string) {
  $start = preg_quote($start);
  $end = preg_quote($end);
  preg_match_all("/$start(.*?)$end/is", $string, $match);
  return $match[1];
}

$result = get_text_between('src="', '"', 'bla bla bla <iframe src="http://website.domain"></iframe> bla bla bla <embed src="url"></embed>');
print_r($result);

输出:

Array
(
    [0] => http://website.domain
    [1] => url
)

但是,使用正则表达式解析 HTML 通常是个坏主意。src如果 HTML 在and之间有空格,或者 HTML 使用单引号而不是双引号等,这将不起作用=。您应该使用 DOM 解析器库,PHP 有几个。

于 2013-04-29T16:39:30.943 回答