xxxemail:admin@admin.comimage:image">Grep.class.php"/> xxxemail:admin@admin.comimage:image">Grep.class.php">

Rumah >pembangunan bahagian belakang >tutorial php >如何通过php 获取页面中的指定内容类

如何通过php 获取页面中的指定内容类

jacklove
jackloveasal
2018-06-09 16:06:463831semak imbas

功能:

1.获取内容中的url,email,image。

2.替换内容中的url,email,image。

url:7236db383ff07d3bb3c6d00ea62b74e5xxx5db79b134e9f6b82c0b36e0489ee08ed

email:admin@admin.com

image:74cc819fc1c281abe404f6d5aec345f8

Grep.class.php

<?php
/** grep class
*   Date:   2013-06-15
*   Author: fdipzone
*   Ver:    1.0
*
*   Func:
*
*   set:        设置内容
*   get:        返回指定的内容
*   replace:    返回替换后的内容
*   get_pattern 根据type返回pattern
*/
class Grep{ // class start
    private $_pattern = array(
                            &#39;url&#39; => &#39;/<a.*?href="((http(s)?:\/\/).*?)".*?/si&#39;,
                            &#39;email&#39; => &#39;/([\w\-\.]+@[\w\-\.]+(\.\w+))/&#39;,
                            &#39;image&#39; => &#39;/<img.*?src=\"(http:\/\/.+\.(jpg|jpeg|gif|bmp|png))\">/i&#39;
                        );
    private $_content = &#39;&#39;; // 源内容
    /* 設置搜尋的內容
    *  @param String $content
    */
    public function set($content=&#39;&#39;){
        $this->_content = $content;
    }
    /* 获取指定内容
    *  @param String $type
    *  @param int    $unique 0:all 1:unique
    *  @return Array
    */
    public function get($type=&#39;&#39;, $unique=0){
        $type = strtolower($type);
        if($this->_content==&#39;&#39; || !in_array($type, array_keys($this->_pattern))){
            return array();
        }
        $pattern = $this->get_pattern($type); // 获取pattern
        preg_match_all($pattern, $this->_content, $matches);
        return isset($matches[1])? ( $unique==0? $matches[1] : array_unique($matches[1]) ) : array();
    }
    /* 获取替换后的内容
    *  @param String $type
    *  @param String $callback
    *  @return String
    */
    public function replace($type=&#39;&#39;, $callback=&#39;&#39;){
        $type = strtolower($type);
        if($this->_content==&#39;&#39; || !in_array($type, array_keys($this->_pattern)) || $callback==&#39;&#39;){
            return $this->_content;
        }
        $pattern = $this->get_pattern($type);
        return preg_replace_callback($pattern, $callback, $this->_content);
    }
    /* 根据type获取pattern
    *  @param String $type
    *  @return String
    */
    private function get_pattern($type){
        return $this->_pattern[$type];
    }
} // class end
?>

Demo

<?php
header(&#39;content-type:text/htm;charset=utf8&#39;);
require(&#39;Grep.class.php&#39;);
$content = file_get_contents(&#39;http://www.test.com/&#39;);
$obj = new Grep();
$obj->set($content);
$url = $obj->get(&#39;url&#39;, 0);
$email = $obj->get(&#39;email&#39;, 1);
$image = $obj->get(&#39;image&#39;, 1);
print_r($url);
print_r($email);
print_r($image);
$url_new = $obj->replace(&#39;url&#39;, &#39;replace_url&#39;);
echo $url_new;
function replace_url($matches){
    return isset($matches[1])? &#39;[url]&#39;.$matches[1].&#39;[/url]&#39; : &#39;&#39;;
}
?>

本文讲解了如何通过php 获取页面中的指定内容类 ,更多相关内容请关注php中文网。

相关推荐:

介绍php相关语法技巧

如何通过php 根据url自动生成缩略图

介绍php output_buffering 缓存使用的方法

Atas ialah kandungan terperinci 如何通过php 获取页面中的指定内容类. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn