text-parsing 相关问题

文本解析是解析的一种变体,它指的是将文本流分解为不同组件并捕获这些组件之间关系的操作。

解析字符串的平面数组以创建关联数组

我该如何转型 数组1 ( [0] => 一些文字 [1] => 一些其他文本 (+14.20 英镑) [2] => 文本文本 (+26.88 英镑) [3] => 另一件 (+68.04 英镑) ) 像这样的关联数组...

回答 3 投票 0

从 HTML 字符串中包裹在 <strong> 标签中的所有 <p> 标签中获取文本

我在 PHP 方面有点挣扎。 我创建了一个数组并用一些curl 返回数据填充了一些位置。 我不知道如何在每个数组位置中搜索 并返回... 我在 PHP 方面有点挣扎。 我创建了一个数组,并用一些curl返回数据填充了一些位置。 我不知道如何在每个数组位置中搜索 <p><strong> 并将其中的每个字符返回到 </p>。 从终端我可能会做这样的事情: grep -A 2 strong | sed -e 's/<p><strong>//' -e 's/<\/strong><br\/>//' -e 's/<br \/>//' -e 's/<\/p>//' -e 's/--//' -e 's/^[ \t]*//;s/[ \t]*$//' 但是我在 PHP 中迷失了 有什么建议吗? 编辑:我想要每个<p><strong>的内容到</p> 编辑2:这是我正在尝试的代码: $m=array(); preg_match_all('/<p><strong>(.*?)<\/p>/',$buffer,$m); $sizeM = count($m); for ( $counter2 = 0; $counter2 <= $sizeM; $counter2++) { $displayString.= $m[$counter2]; } 并获取 ArrayArrayArray...作为我的 $displayString 编辑3:我正在这样做: $curl_handle=curl_init(); curl_setopt($curl_handle,CURLOPT_URL, $url); curl_setopt($curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.04 (lucid) Firefox/3.6.15"); curl_setopt($curl_handle, CURLOPT_HEADER, 0); curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); $buffer = curl_exec($curl_handle); curl_close($curl_handle); $m=array(); preg_match_all('/<p>.*?<strong>(.*?)<\/p>/i',$buffer,$m); foreach($m[1] as $mnum=>$match) { $displayString.='Match '.$mnum.' is: '.$match."\n"; } 在 PHP 和许多其他语言中,最好不要使用字符串函数或正则表达式来匹配 HTML,因为 HTML 不是正则的,并且可能会出现真正的错误。 您应该看到的是一个 DOM 系统,您可以将 html 作为对象进行迭代,就像 JavaScript 访问 DOM 一样。 您应该查看以下本机 PHP 库来帮助您入门:http://php.net/manual/en/class.domdocument.php 您可以像这样简单地使用: $xml = new DOMDocument(); // Load the url's contents into the DOM $xml->loadHTMLFile($url); //Loop through each <a> tag in the dom and add it to the link array foreach($xml->getElementsByTagName('a') as $link) { echo $link->href . "\n"; } 这将找到文档中的所有链接。 另请参阅我创建的帖子以及 Gordon 的精彩回答:How do you parse and process HTML/XML in PHP? preg_match_all() $m=array(); preg_match_all('/<p>\s*<strong>([\s\S]*?)<\/p>/i',$string,$m); foreach($m[1] as $mnum=>$match){ $displayString.='Match '.$mnum.' is: '.$match."\n"; } $m 现在包含所有匹配项。 $m[0] 持有整场比赛, $m[1] 保存括号匹配项 正如其他帖子中所指出的,如果您尝试处理 HTML,则不应使用正则表达式。 要处理查找<p><strong>,您可以使用DOMDocument: $doc = new DOMDocument(); $doc->loadHTML($html); $pTags = $doc->getElemetsByTagName('p'); for ($pTags as $pTag) { if ($pTag->firstChild->nodeName === 'strong') { $data = $pTag->firstChild->nodeValue; } } 或者使用 XPath: $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $matchingNodes = $xpath->query('//p/strong'); 或者您甚至可以使用外籍人士。 这些方法比使用正则表达式更清晰、经过验证、灵活且更安全。 我个人最喜欢从 xml 样式文档中提取数据的是 xpath。 这是一组很好的 xpath 示例:http://msdn.microsoft.com/en-us/library/ms256086.aspx 编辑: *注意:如果您尝试处理非常大的 XML/HTML 文档,您将不想使用 DOMDocument 或 XPath,因为它们对于大型文档可能会很慢。 对于这些情况,请使用事件驱动的 XML 解析器。 我们在工作中遇到过使用 XPath 解析大型 XML 文件需要几分钟的情况,而使用事件驱动解析器解析同一文件只需要几秒钟。 正则表达式将是你的朋友。 strpos、substr 和 explode 是有用的 php 函数。 好吧,如果位置与您期望的结果不相关,您可以尝试将数组合并到单个字符串中,并在其中执行正则表达式... 这是代码 <?php $data = array( 'DONT MATCH THISDONT MATCH THIS<p><strong>hello1!</strong></p>DONT MATCH THISDONT MATCH THISDONT MATCH THIS', 'DONT MATCH THISDONT MATCH THIS<p><strong>hello2!</strong></p>DONT MATCH THISDONT MATCH THISDONT MATCH THIS', 'DONT MATCH THISDONT MATCH THIS<p><strong>hello3!</strong></p>DONT MATCH THISDONT MATCH THISDONT MATCH THIS', '<p><strong>hello4!</strong></p>DONT MATCH THISDONT MATCH THIS<p><strong>hello5!</strong> test test</p>DONT MATCH THISDONT MATCH THISDONT MATCH THIS', 'DONT MATCH THISDONT MATCH THIS<p><strong>hello6!</strong></p>DONT MATCH THISDONT MATCH THISDONT MATCH THIS', ); preg_match_all('/<p><strong>.*?<\/p>/',implode($data,''),$results); print_r($results); ?> 让我知道这是否适合您。干杯!

回答 5 投票 0

获取分隔字符串中的第二个和第三个值并分配给变量

我有以下字符串: CAE33D8E804334D5B490EA273F36830A9849ACDF|xx|yy|46|13896|9550 在下面的代码中对应于$track_matches[0][0]。 唯一的恒定长度字段是第一个 (

回答 3 投票 0

sed 中的行号和否定搜索组合

我有一个 csv,其尾部缺少列数据,例如下列: 数据1、数据2、用户 abc,def,foo 嗨,荷航,foo 没有,qrs tuv,wxy 在本例中,我想将 bar 添加到不带 foo 的行末尾。那是

回答 1 投票 0

PowerAutomate Flow 帮助 - 更新两个不同阵列的列表

有人能够帮助我弄清楚电力自动化流程的逻辑吗? 我正在尝试解析电子邮件,并且已经达到了提取我想要的数据并将其保存在 2 小时内的地步...

回答 1 投票 0

Bash + awk 高级解析

我想使用 awk 和一些逻辑创建一个 oneliner。这是要使用的命令和输出: grep -v "local_address" --no-filename "/proc/net/tcp" "/proc/net/tcp...

回答 1 投票 0

如何将带有一些无组织工作表的 Excel 文件解析为 csv?

我有一个 Excel 凭证文件,我想解析它并从中创建一个干净的 csv,我不知道如何处理这个问题,该文件也没有完全组织起来,这使得我不得不思考......

回答 1 投票 0

如何在 Ruby 中标记该字符串?

我有这个字符串: %{儿童^10健康“卫生管理”^5} 我想将其转换为将其标记为哈希数组: [{:keywords=>"children", :boost=>10}, {:keywords=>"

回答 3 投票 0

如何在数据中使用 pandas read_fwf 和日文字符

我正在尝试从包含日本城市名称的文本文件中读取数据。每行包含 32 个字节,其中名称列为 22 个字节。 当我尝试使用 pandas.read_fwf() 时,结果是错误的

回答 1 投票 0

解析表达式语法以进行语法突出显示

首先...是否可以使用 PEG 来完成简单的语法突出显示。 我只是希望它能够识别和突出显示 C 风格语言常见的基本内容

回答 1 投票 0

For 循环只输出一个 nslookup 结果,当有多个时

我在批处理脚本中使用 nslookup.exe 来打印输入域的所有可用 IPv4 地址。但即使有多个,它也只打印出其中一个。 我想我是

回答 1 投票 0

在文本文件中,计算从字符串“foo”到第一个空行的行数。如果未找到“foo”则引发异常

背景:我想从文本文件中读取一些数据到极坐标数据框中。数据从包含字符串 foo 的行开始,并在之后的第一个空行处停止。示例文件测试...

回答 1 投票 0

在 R 中读取包含由标题分隔的多个数据帧的文本文件

我有一个大文本文件,其中包含多个数据帧,由标题行分隔,我试图将其读入 R。第一个标题行包含时间变量。我想分离数据

回答 1 投票 0

Python 中的字符串剥离(将以 '&' 开头或以小写字母开头的行连接到上一行的末尾)

我使用 Python 解析带有收据的电子邮件以收集数据库。 我的部分代码无法正常工作。 代码: # 将以 '&' 或小写字母开头的行连接到 en...

回答 1 投票 0

读取包含键值对行的 csv 文件,用于创建一个新的 csv 文件,该文件的标题中包含唯一键,行中包含默认值

我有一个特定格式的 CSV 数据集 键=值,键2=值,键3=值 键=值,键2=值,键4=值,键3=值 我想将其转换为: 键,键2,键3,键4 值,值,值,空 值,

回答 2 投票 0

PHP 正则表达式键:值验证

我有一个关键字列表,例如:key1、key2、key3、key4 ... 我有一个字符串,包括免费字符串和键:值对。我需要确定它有效或无效。规则如下: 如果

回答 2 投票 0

Python回复:我想捕获字符串分隔符之间的多行

我有一个像这样的文件,它在分隔符之间有多行,我想捕获 start_of_compile 和 end_of_compile 之间的所有内容(不包括注释)。 我想解析的字符串...

回答 1 投票 0

将 RGB 字符串解析为整数并避免在 Laravel SimpleQrcode 中遇到“格式不正确的数值”

我正在开发 SimpleQrcode Laravel。 我正在尝试在数据库中以 rgba 格式(ajax)存储特定 id 的 qrcode 背景色的颜色,并将其作为变量调用以更改 qr 码的 b...

回答 2 投票 0

将格式化字符串数组转换为数组数组

如何将 Postgres 查询中的数组转换为 Laravel 中的数组变量? 我的 我有来自 Laravel 的 var_dump 结果: 0 => 数组:1 [ “order_itemset”=>“{8,11}” ] 1 =...

回答 3 投票 0

将 Markdown 符号转换为 HTML 标签,除非在 <pre> 或 <code> 标签内

我正在尝试用文本块中的 HTML 标签替换特殊符号/占位符。到目前为止,它运行良好,但如果可替换实体位于...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.