> 백엔드 개발 > PHP 튜토리얼 > 正则表达式 - php提取html中指定div下a标签的text和href问题

正则表达式 - php提取html中指定div下a标签的text和href问题

WBOY
풀어 주다: 2016-06-06 20:27:03
원래의
2030명이 탐색했습니다.

已解决,有点凌乱,速度就行。

<code><?php header('content-type:application/json;charset=utf8');
$url='http://www.hkxy.edu.cn/'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_NOBODY, 0); // remove body 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'); 
$response = curl_exec($ch); // 检查是否有错误发生 
if(curl_errno($ch)) { 
    echo 'Curl error: ' . curl_error($ch); 
} else{ 
    echo htmlspecialchars($response); 
} 
curl_close($ch);
$response=iconv('gbk', 'utf-8', $response);
$response=str_replace(' ','',$response);
$pa = '%<div class="column4">(.*?)%sim';
preg_match_all($pa,$response,$arr);
$pa = '%<a class="" href="(.*?)" title="(.*?)" target="_blank">(.*?)</a>%sim';
preg_match_all($pa,$response,$arr);

$result=array();
$number=count($arr[1]);
for($i=0;$i1000 ) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }
        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}
/**************************************************************
 *
 *  将数组转换为JSON字符串(兼容中文)
 * @param  array $array 要转换的数组
 * @return string      转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array)
{
    arrayRecursive($array, 'urlencode', true);
    $json = json_encode($array);
    return urldecode($json);
}</code>
로그인 후 복사
로그인 후 복사


URL:http://www.hkxy.edu.cn/

如图所示:
我想提取.offer_box_wide1下a元素的text和href怎么破?求教

正则表达式 - php提取html中指定div下a标签的text和href问题

回复内容:

已解决,有点凌乱,速度就行。

<code><?php header('content-type:application/json;charset=utf8');
$url='http://www.hkxy.edu.cn/'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_NOBODY, 0); // remove body 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'); 
$response = curl_exec($ch); // 检查是否有错误发生 
if(curl_errno($ch)) { 
    echo 'Curl error: ' . curl_error($ch); 
} else{ 
    echo htmlspecialchars($response); 
} 
curl_close($ch);
$response=iconv('gbk', 'utf-8', $response);
$response=str_replace(' ','',$response);
$pa = '%<div class="column4">(.*?)%sim';
preg_match_all($pa,$response,$arr);
$pa = '%<a class="" href="(.*?)" title="(.*?)" target="_blank">(.*?)</a>%sim';
preg_match_all($pa,$response,$arr);

$result=array();
$number=count($arr[1]);
for($i=0;$i1000 ) {
        die('possible deep recursion attack');
    }
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            arrayRecursive($array[$key], $function, $apply_to_keys_also);
        } else {
            $array[$key] = $function($value);
        }
        if ($apply_to_keys_also && is_string($key)) {
            $new_key = $function($key);
            if ($new_key != $key) {
                $array[$new_key] = $array[$key];
                unset($array[$key]);
            }
        }
    }
    $recursive_counter--;
}
/**************************************************************
 *
 *  将数组转换为JSON字符串(兼容中文)
 * @param  array $array 要转换的数组
 * @return string      转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array)
{
    arrayRecursive($array, 'urlencode', true);
    $json = json_encode($array);
    return urldecode($json);
}</code>
로그인 후 복사
로그인 후 복사


URL:http://www.hkxy.edu.cn/

如图所示:
我想提取.offer_box_wide1下a元素的text和href怎么破?求教

正则表达式 - php提取html中指定div下a标签的text和href问题

最简单的办法是phpQuery

参考PHP Simple HTML DOM Parser
http://simplehtmldom.sourceforge.net/
可以像jquery选择器一样灵活操作html。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿