gpt4 book ai didi

查找 PHP 错误的 PHP 正则表达式

转载 作者:行者123 更新时间:2023-12-03 19:50:37 26 4
gpt4 key购买 nike

我想要一个可以在页面上查找错误的 PHP 正则表达式。因此,当我访问网站并抓取页面时,我可以列出网站上的错误。

目前我有以下代码:

preg_match('/<b>.+<\/b>:.+ in <b>\/.+<\/b> on line <b>[0-9]+<\/b><br( \/)?>/msi',$html,$errors);

它可以显示是否发生错误,但不会列出它们!我得到数组中的完整 html 页面 ($errors[0])

有人能帮忙吗?

编辑:所以我有一个页面,例如包含以下 HTML 源代码,我想从中提取 PHP 错误:

<b>Warning</b>:  session_start() [<a href='function.session-start'>function.session-start</a>]: The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in <b>/home/.../public_html/articlescript/init.php</b> on line <b>127</b><br />
<br />
<b>Warning</b>: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at /home/.../public_html/articlescript/init.php:127) in <b>/home/.../public_html/articlescript/init.php</b> on line <b>127</b><br />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>...

最佳答案

因为 - 嗯,你知道 - 你不应该使用正则表达式来解析 HTML,尝试使用 PHP’s DOM library :

libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML($str);
$messages = array();
foreach ($doc->getElementsByTagName('b') as $elem) {
if (in_array($elem->textContent, array('Error', 'Warning', 'Notice'))) {
$buffer = $elem->textContent;
while ($elem->nextSibling !== null && strtolower($elem->nextSibling->localName) !== 'br') {
$elem = $elem->nextSibling;
$buffer .= $elem->textContent;
}
$messages[] = $buffer;
}
}

这将搜索内容为“Error”、“Warning”或“Notice”之一的 B 元素,并从那里获取文本内容直到下一个 BR元素。 libxml_use_internal_errors的初始调用将防止报告解析错误。

关于查找 PHP 错误的 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892390/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com