本文目录一览:
- 1、php中curl爬虫 怎么样通过网页获取所有链接
- 2、thinkpad E425 笔记本无法重装系统
- 3、TCPDF 怎么能批量生成pdf文件???
- 4、联想thinkpad win8.1下电源管理软件 setting,根本没用,怎么解决?
- 5、win2008服务器iis怎么安装phpadmin
- 6、Sublime Text,php代码格式化插件codeformatter 设置PHP代码格式时报错 怎么处理
php中curl爬虫 怎么样通过网页获取所有链接
本文承接上面两篇,本篇中的示例要调用到前两篇中的函数,做一个简单的URL采集。一般php采集网络数据会用file_get_contents、file和cURL。不过据说cURL会比file_get_contents、file更快更专业,更适合采集。今天就试试用cURL来获取网页上的所有链接。示例如下:
?php
/*
* 使用curl 采集hao123.com下的所有链接。
*/
include_once('function.php');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '');
// 只需返回HTTP header
curl_setopt($ch, CURLOPT_HEADER, 1);
// 页面内容我们并不需要
// curl_setopt($ch, CURLOPT_NOBODY, 1);
// 返回结果,而不是输出它
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($ch);
$info = curl_getinfo($ch);
if ($html === false) {
echo "cURL Error: " . curl_error($ch);
}
curl_close($ch);
$linkarr = _striplinks($html);
// 主机部分,补全用
$host = '';
if (is_array($linkarr)) {
foreach ($linkarr as $k = $v) {
$linkresult[$k] = _expandlinks($v, $host);
}
}
printf("p此页面的所有链接为:/ppre%s/pren", var_export($linkresult , true));
?
function.php内容如下(即为上两篇中两个函数的合集):
?php
function _striplinks($document) {
preg_match_all("'s*as.*?hrefs*=s*(["'])?(?(1) (.*?)\1 | ([^s]+))'isx", $document, $links);
// catenate the non-empty matches from the conditional subpattern
while (list($key, $val) = each($links[2])) {
if (!empty($val))
$match[] = $val;
} while (list($key, $val) = each($links[3])) {
if (!empty($val))
$match[] = $val;
}
// return the links
return $match;
}
/*===================================================================*
Function: _expandlinks
Purpose: expand each link into a fully qualified URL
Input: $links the links to qualify
$URI the full URI to get the base from
Output: $expandedLinks the expanded links
*===================================================================*/
function _expandlinks($links,$URI)
{
$URI_PARTS = parse_url($URI);
$host = $URI_PARTS["host"];
preg_match("/^[^?]+/",$URI,$match);
$match = preg_replace("|/[^/.]+.[^/.]+$|","",$match[0]);
$match = preg_replace("|/$|","",$match);
$match_part = parse_url($match);
$match_root =
$match_part["scheme"]."://".$match_part["host"];
$search = array( "|^http://".preg_quote($host)."|i",
"|^(/)|i",
"|^(?!http://)(?!mailto:)|i",
"|/./|",
"|/[^/]+/../|"
);
$replace = array( "",
$match_root."/",
$match."/",
"/",
"/"
);
$expandedLinks = preg_replace($search,$replace,$links);
return $expandedLinks;
}
?
thinkpad E425 笔记本无法重装系统
尊敬的用户您好!
建议您尝试以下方法解决您的问题:
1.插入Windows 7安装光盘并从光盘启动。插入引导盘,开机F12进入BOOT MENU选择您需要启动的光盘启动。
选择一种语言、时间、货币,和键盘或另一种输入的方法,然后单击下一步
选择“修复您的计算机”
单击您要修复,选择操作系统,然后单击下一步
在“系统故障恢复选项”对话框,单击“命令提示符”
运行两条命令“Bootrec.exe /fixmbr和Bootrec /fixboot”,然后重启。
别忘了进系统还要取消压缩磁盘选项,否则过段时间系统还是会再次压缩,再次出现这种问题。
2.如果无法通过上面的方法进行修复,建议你尝试使用Win PE(这是一个非常简单的操作系统,是从USB引导的(开机F12进入Boot MENU设置一下U盘引导),开机启动。
)进入系统后,取消系统盘的压缩。
启动WINPE系统,打开“我的电脑”点击C盘右键,把“压缩此驱动器以节约空间”打钩去掉,点击“确定”,系统开始还原C盘压缩,此过程可能会提示出错,不用管,忽略即可,还原完成后确定。
3.同第二个方法,光盘启动,打开“命令提示符”
然后依次输入下列命令
expandbootmgr temp
attribbootmgr -s -r -h
delbootmgr
rentemp bootmgr
attribbootmgr -a +s +r +h
4.同第二个方法,光盘启动,打开“命令提示符”
转到你Windows Vista\Windows 7的system32目录(如c:\windows\system32),之后“compact /uc:\bootmgr“
最好运行”compact /u /a /f /s:C:\”,把系统盘整个分区解压缩。
希望能够帮到您,祝您生活愉快!
TCPDF 怎么能批量生成pdf文件???
tcpdf类生成PDF文件:
一、安装tcpdf
二、tcpdf插件中examples
三、写入方法生成pdf页面
方法一、在index.php中写入pdfdemo方法
01)、使用命名空间
user TCPDF;
02)、引入example01方法
public function pdfdemo(){
$html = 'h1 style="color: #0000FF"hello tcpdf/h1br我是波哥,我爱Thinkphp!!!img src="logo.png"/';
Pdf::createPdf($html);
exit();
}
public function pdfdemo1(){
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set document information
$pdf-SetCreator(PDF_CREATOR);
$pdf-SetAuthor('Nicola Asuni');
$pdf-SetTitle('TCPDF Example 001');
$pdf-SetSubject('TCPDF Tutorial');
$pdf-SetKeywords('TCPDF, PDF, example, test, guide');
// set default header data
$pdf-SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 001', PDF_HEADER_STRING, array(0,64,255), array(0,64,128));-thinkphpexpand
$pdf-setFooterData(array(0,64,0), array(0,64,128));
// set header and footer fonts
$pdf-setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf-setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf-SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// set margins
$pdf-SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf-SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf-SetFooterMargin(PDF_MARGIN_FOOTER);
// set auto page breaks
$pdf-SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// set image scale factor
$pdf-setImageScale(PDF_IMAGE_SCALE_RATIO);
// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
require_once(dirname(__FILE__).'/lang/eng.php');
$pdf-setLanguageArray($l);
}
// ---------------------------------------------------------
// set default font subsetting mode
$pdf-setFontSubsetting(true);
// Set font
// dejavusans is a UTF-8 Unicode font, if you only need to
// print standard ASCII chars, you can use core fonts like
// helvetica or times to reduce file size.
$pdf-SetFont('dejavusans', '', 14, '', true);
// Add a page
// This method has several options, check the source code documentation for more information.
$pdf-AddPage();
// set text shadow effect
$pdf-setTextShadow(array('enabled'=true, 'depth_w'=0.2, 'depth_h'=0.2, 'color'=array(196,196,196), 'opacity'=1, 'blend_mode'='Normal'));-thinkphpexpand
// Set some content to print
$html = EOD
h1Welcome to a href="" style="text-decoration:none;background-color:#CC0000;color:black;" span style="color:black;"TC/spanspan style="color:white;"PDF/span /a!/h1-thinkphpexpand
iThis is the first example of TCPDF library./i
pThis text is printed using the iwriteHTMLCell()/i method but you can also use: iMulticell(), writeHTML(), Write(), Cell() and Text()/i./p-thinkphpexpand
pPlease check the source code documentation and other examples for further information./p
p style="color:#CC0000;"TO IMPROVE AND EXPAND TCPDF I NEED YOUR SUPPORT, PLEASE a href=""MAKE A DONATION!/a/p-thinkphpexpand
EOD;
// Print text using writeHTMLCell()
$pdf-writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
// ---------------------------------------------------------
// Close and output PDF document
// This method has several options, check the source code documentation for more information.
$pdf-Output('example_001.pdf', 'I');
exit();
}
}
联想thinkpad win8.1下电源管理软件 setting,根本没用,怎么解决?
尊敬的联想用户您好!
重装电源管理驱动
还没有针对win8.1的杜比,建议等待驱动更新
先卸载lenovo setting 然后到应用商店再搜索安装。
更多问题您可以咨询
idea论坛:
Think论坛:
联想乐社区:
期待您满意的评价,感谢您对联想的支持,祝您生活愉快!
win2008服务器iis怎么安装phpadmin
事前准备: 1、Windows XP HomeEdit 中文版 CD(拷在硬盘也可以)2、Windows 2000 Advanced Server CD(最好也是中文版)3、默认你的XP是安装在C:\WINDOWS下开始动手(如果你怕改错,先把C:\WINDOWS\INF\SYSOC.INF做一份备份)用记事本打开C:\WINDOWS\INF\SYSOC.INF,在[COMPONENTS]下找到一行:iis=iis.dll,OcEntry,iis.inf,hide,7然后把它改成 iis=iis2.dll,OcEntry,iis2.inf,,7保存。然后把Windows 2000 Advanced Server CD里的两个文件IIS.DL_和IIS.IN_拷贝到一个临时的目录(例如C:\AAA),然后在命令提示符状态下将当前目录转到C:\AAA,执行EXPAND IIS.DL_ IIS2.DLLEXPAND IIS.IN_ IIS2.INF解出IIS2.DLL及IIS2.INF两个文件,将IIS2.INF复制到C:\WINDOWS\INF目录下,将IIS2.DLL 复制到C:\WINDOWS\SYSTEM32\SETUP目录下。现在按“开始-设置-控制面板-添加或删除程序-添加/删除Windows组件”,这时你可以很兴奋地发现IIS出现了!!!此后的过程就和PRO版的XP安装IIS差不多了,过程中会要求你选择Windows 2000 Advanced Server光盘和Windows XP HomeEdit光盘的位置,输入指定的目录即可正常安装。安装完毕以后还不能直接用的,需要对IIS进行一些设置:控制面板-管理工具-Internet服务管理器然后点“默认WEB站点”的右键,转到“目录安全性”选项卡,点“匿名访问和验证控制”的“编辑”按钮,回弹出匿名方法新窗口,再点击其中“匿名访问”中的“编辑”按钮,将“允许IIS控制密码”全面的勾去掉,然后一路确定返回即可。经过这样处理安装的IIS在运行上可能存在某种未知的缺陷!!!还有,同Professional版的XP一样,在Home版上运行的IIS也有10个并发连接的限制。在同一个时间内,最多只能有10个人使用你提供的IIS服务。还有一点注意的: 如果你在安装过程中,系统需要你插入Window Whistler CD或者需要你提供exch_adsiisex.dll这个文件,那是因为你按照默认的选项安装了IIS。要解决这个问题,只要在安装IIS的时候先点击"详细信息",然后取消对SMTP的选择(即,不要安装SMTP服务器),那么复制文件的时候就不会需要那两个文件了。 如果在你安装时已经显示了Internet信息服务(IIS)的安装项目,但是它们根本无法被选中,那很可能因为你使用的iis.dl_和iis.in_是从Windows XP Professional中取出的,只要换成Windows 2000 Professional中的就可以继续正常安装了。 据说,WWW、FTP等几个服务经过这样的修改都可以在Windows XP Home上正常运行。(我还没自己验证)不管了.无论如何我要尝试一下.因为实在不想重新装系统.因为我的程序都在c盘.重新装太麻烦!!-thinkphpexpand
Sublime Text,php代码格式化插件codeformatter 设置PHP代码格式时报错 怎么处理
{
"codeformatter_debug": false,
"codeformatter_php_options":
{
"syntaxes": "php", // Syntax names which must process PHP formatter
"php_path": "这里改成你php的路径", // Path for PHP executable, e.g. "/usr/lib/php" or "C:/Program Files/PHP/php.exe". If empty, uses command "php" from system environments-thinkphpexpand
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"php55_compat": false, // PHP 5.5 compatible mode
"psr1": false, // Activate PSR1 style
"psr1_naming": false, // Activate PSR1 style - Section 3 and 4.3 - Class and method names case
"psr2": true, // Activate PSR2 style
"indent_with_space": 4, // Use spaces instead of tabs for indentation
"enable_auto_align": true, // Enable auto align of = and =
"visibility_order": true, // Fixes visibility order for method in classes - PSR-2 4.2
"smart_linebreak_after_curly": true, // Convert multistatement blocks into multiline blocks
// Enable specific transformations. Example: ["ConvertOpenTagWithEcho", "PrettyPrintDocBlocks"]
// You can list all available transformations from command palette: CodeFormatter: Show PHP Transformations-thinkphpexpand
"passes": [],
// Disable specific transformations
"excludes": []
},
"codeformatter_js_options":
{
"syntaxes": "javascript,json", // Syntax names which must process JS formatter
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"indent_size": 4, // indentation size
"indent_char": " ", // Indent character
"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)
"eol": "\n", // EOL symbol
"preserve_newlines": false, // whether existing line breaks should be preserved,
"max_preserve_newlines": 10, // maximum number of line breaks to be preserved in one chunk
"space_in_paren": false, // Add padding spaces within paren, ie. f( a, b )
"space_in_empty_paren": false, // Add padding spaces within paren if parent empty, ie. f( )
"e4x": false, // Pass E4X xml literals through untouched
"jslint_happy": false, // if true, then jslint-stricter mode is enforced. Example function () vs function()-thinkphpexpand
"space_after_anon_function": false, // Space after anonimouse functions
"brace_style": "collapse", // "collapse" | "expand" | "end-expand". put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.-thinkphpexpand
"keep_array_indentation": false, // keep array indentation.
"keep_function_indentation": false, // keep function indentation.
"eval_code": false, // eval code
"unescape_strings": false, // Decode printable characters encoded in xNN notation
"wrap_line_length": 0, // Wrap lines at next opportunity after N characters
"unindent_chained_methods": false, // Unindent chained method calls
"break_chained_methods": false, // Break chained method calls across subsequent lines
"end_with_newline": false, // Add new line at end of file
"comma_first": false, // Add comma first
"operator_position": "before-newline" // Operator position: before-newline, after-newline, preserve-newline-thinkphpexpand
},
"codeformatter_css_options":
{
"syntaxes": "css,less", // Syntax names which must process CSS formatter
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"indent_size": 4, // Indentation size
"indent_char": " ", // Indentation character
"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)
"selector_separator_newline": false, // Add new lines after selector separators
"end_with_newline": false, // Add new line of end in file
"newline_between_rules": false, // Add new line between rules
"space_around_combinator": false, // Space around combinator
"eol": "\n" // EOL symbol
},
"codeformatter_scss_options":
{
"syntaxes": "scss,sass", // Indentation size
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"indent_size": 4, // Indentation size
"indent_char": " ", // Indentation character
"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)
"selector_separator_newline": false, // Add new lines after selector separators
"end_with_newline": false, // Add new line of end in file
"newline_between_rules": false, // Add new line between rules
"space_around_combinator": false, // Space around combinator
"eol": "\n" // EOL symbol
},
"codeformatter_html_options":
{
"syntaxes": "html,blade,asp,xml", // Syntax names which must process HTML formatter
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"formatter_version": "bs4", // Which formatter to use. Current options are "bs4" and "regexp". If an error occurs while loading the bs4 formatter, the regexp formatter will automatically be used-thinkphpexpand
"indent_size": 4, // indentation size
"indent_char": " ", // Indentation character
"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)
"exception_on_tag_mismatch": false, // If the last closing tag is not at the same indentation level as the first opening tag, there's probably a tag mismatch in the file-thinkphpexpand
"expand_javascript": false, // (Under construction) Expand JavaScript inside of script tags (also affects CSS purely by coincidence)-thinkphpexpand
"expand_tags": false, // Expand tag attributes onto new lines
"minimum_attribute_count": 2, // Minimum number of attributes needed before tag attributes are expanded to new lines-thinkphpexpand
"first_attribute_on_new_line": false, // Put all attributes on separate lines from the tag (only uses 1 indentation unit as opposed to lining all attributes up with the first)-thinkphpexpand
"reduce_empty_tags": false, // Put closing tags on same line as opening tag if there is no content between them-thinkphpexpand
"reduce_whole_word_tags": false, // Put closing tags on same line as opening tag if there is whole word between them-thinkphpexpand
"custom_singletons": "" // Custom singleton tags for various template languages outside of the HTML5 spec-thinkphpexpand
},
"codeformatter_python_options":
{
"syntaxes": "python", // Syntax names which must process Python formatter
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"indent_size": 1, // indentation size
"indent_with_tabs": true, // Indent with tabs or spaces
"max_char": 80, // Width of output lines in characters.
"assignment": " = ", // This is how the assignment operator is to appear.
"function_param_assignment": "=", // This is how function-parameter assignment should appear.
"function_param_sep": ", ", // This is how function parameters are separated.
"list_sep": ", ", // This is how list items are separated.
"subscript_sep": "=", // This is how subscripts are separated.
"dict_colon": ": ", // This separates dictionary keys from values.
"slice_colon": ":", // this separates the start:end indices of slices.
"comment_prefix": "# ", // This is the sentinel that marks the beginning of a commentary string.
"shebang": "#!/usr/bin/env python", // Hashbang, a line-one comment naming the Python interpreter to Unix shells.-thinkphpexpand
"boilerplate": "", // Standard code block (if any). This is inserted after the module doc string on output.-thinkphpexpand
"blank_line": "", // This is how a blank line is to appear (up to the newline character).
"keep_blank_lines": true, // If true, preserve one blank where blank(s) are encountered.
"add_blank_lines_around_comments": true, // If true, set off comment blocks with blanks.
"add_blank_line_after_doc_string": true, // If true, add blank line after doc strings.
"max_seps_func_def": 3, // Split lines containing longer function definitions.
"max_seps_func_ref": 5, // Split lines containing longer function calls.
"max_seps_series": 5, // Split lines containing longer lists or tuples.
"max_seps_dict": 3, // Split lines containing longer dictionary definitions.
"max_lines_before_split_lit": 2, // Split string literals containing more newline characters.
"left_margin": "", // This is how the left margin is to appear.
"normalize_doc_strings": false, // If true, normalize white space in doc strings.
"leftjust_doc_strings": false, // If true, left justify doc strings.
"wrap_doc_strings": false, // If true, wrap doc strings to max_char.
"leftjust_comments": false, // If true, left justify comments.
"wrap_comments": false, // If true, wrap comments to max_char.
"double_quoted_strings": false, // If true, use quotes instead of apostrophes for string literals.
"single_quoted_strings": false, // If true, use apostrophes instead of quotes for string literals.
"can_split_strings": false, // If true, longer strings are split at the max_char.
"doc_tab_replacement": "....", // This literal replaces tab characters in doc strings and comments.
// Optionally preserve unassigned constants so that code to be tidied
// may contain blocks of commented-out lines that have been no-op'ed
// with leading and trailing triple quotes. Python scripts may declare
// constants without assigning them to a variables, but CodeFormatter
// considers this wasteful and normally elides them.
"keep_unassigned_constants": false,
// Optionally omit parentheses around tuples, which are superfluous
// after all. Normal CodeFormatter behavior will be still to include them
// as a sort of tuple display analogous to list displays, dict
// displays, and yet-to-come set displays.
"parenthesize_tuple_display": true,
// When CodeFormatter splits longer lines because max_seps
// are exceeded, the statement normally is closed before the margin is
// restored. The closing bracket, brace, or parenthesis is placed at the
// current indent level. This looks ugly to "C" programmers. When
// java_style_list_dedent is True, the closing bracket, brace, or
// parenthesis is brought back left to the indent level of the enclosing
// statement.
"java_style_list_dedent": false
},
"codeformatter_vbscript_options":
{
"syntaxes": "vbscript", // Syntax names which must process VBScript formatter
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"indent_size": 1, // indentation size
"indent_char": "\t", // Indentation character
"indent_with_tabs": true, // Indent with one tab (overrides indent_size and indent_char options)
"preserve_newlines": true, // Preserve existing line-breaks
"max_preserve_newlines": 10, // Maximum number of line-breaks to be preserved in one chunk
"opening_tags": "^(Function .*|Sub .*|If .* Then|For .*|Do While .*|Select Case.*)", // List of keywords which open a new block-thinkphpexpand
"middle_tags": "^(Else|ElseIf .* Then|Case .*)$", // List of keywords which divide a block, but neither open or close the block-thinkphpexpand
"closing_tags": "(End Function|End Sub|End If|Next|Loop|End Select)$" // List of keywords which close an open block-thinkphpexpand
},
"codeformatter_coldfusion_options":
{
"syntaxes": "coldfusion,cfm,cfml", // Syntax names which must process Coldfusion Markup Language formatter-thinkphpexpand
"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"-thinkphpexpand
"indent_size": 2, // indentation size
"indent_char": " ", // Indentation character
"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)
"exception_on_tag_mismatch": false, // If the last closing tag is not at the same indentation level as the first opening tag, there's probably a tag mismatch in the file-thinkphpexpand
"expand_javascript": false, // (Under construction) Expand JavaScript inside of script tags (also affects CSS purely by coincidence)-thinkphpexpand
"expand_tags": false, // Expand tag attributes onto new lines
"minimum_attribute_count": 2, // Minimum number of attributes needed before tag attributes are expanded to new lines-thinkphpexpand
"first_attribute_on_new_line": false, // Put all attributes on separate lines from the tag (only uses 1 indentation unit as opposed to lining all attributes up with the first)-thinkphpexpand
"reduce_empty_tags": false, // Put closing tags on same line as opening tag if there is no content between them-thinkphpexpand
"reduce_whole_word_tags": false, // Put closing tags on same line as opening tag if there is whole word between them-thinkphpexpand
"custom_singletons": "" // Custom singleton tags for various template languages outside of the HTML5 spec-thinkphpexpand
}
}