文本解析是解析的一种变体,它指的是将文本流分解为不同组件并捕获这些组件之间关系的操作。
这里是一个很长的字符串(实际上是一个JSON键值): "\u003cspan title=\"5 个金色徽章\"\u003e\u003cspan class=\"badge1\"\u003e●\u003c/span\u003e\u003cspan class=\"badgecount\"\u003e5\u003...
如何使用 preg_match 从字符串中选择两个数字? 我之前使用过 preg_match 仅选择 和 # 标签。 例如,我需要选择方程中的两个数字: $</desc> <question vote="0"> <p>如何使用 <pre><code>preg_match</code></pre> 从字符串中选择两个数字? 我之前使用过 <pre><code>preg_match</code></pre> 仅选择 <pre><code><iframe></code></pre> 和 <pre><code>#</code></pre> 标签。</p> <p>例如,我需要选择方程中的两个数字:</p> <pre><code>$message = 'whats 23x347?'; </code></pre> <p>并给我一个输出变量:</p> <pre><code>$first_number = 23 $seccond_number = 347 list($first_number, $second_number) = preg_split("/x/",$message); </code></pre> <p>这大部分有效,但是它不会删除之前或之后的非数字文本。</p> </question> <answer tick="false" vote="2"> <p>如果将中间的运算符作为数学符号进行匹配,则可以将其传递给另一个函数,然后能够计算多种表达式类型:加法、减法等。</p> <p>简单的preg_match</p> <pre><code>preg_match("/(\d+)\s*?(\*|\.|x|\-|\+|\/|\%|\^)\s*?(\d+)/", $str, $matches) </code></pre> <p>在某些函数中使用正则表达式</p> <pre><code>function parseExpression($str='') { if (preg_match("/(\d+)\s*?(\*|\.|x|\-|\+|\/|\%|\^)\s*?(\d+)/", $str, $matches)) { $number_1 = $matches[1]; $operator = $matches[2]; $number_2 = $matches[3]; return calculate($number_1, $operator, $number_2); } return false; } function calculate($number_1, $operator, $number_2) { if ($operator === 'x' || $operator === '*' || $operator === '.') { return $number_1 * $number_2; } elseif ($operator === '-') { return $number_1 - $number_2; } elseif ($operator === '+') { return $number_1 + $number_2; } elseif ($operator === '/') { return $number_1 / $number_2; } elseif ($operator === '%') { return $number_1 % $number_2; } elseif ($operator === '^') { return pow($number_1, $number_2); } else { return false; } } echo var_dump(parseExpression('23x347')); // int(7981) echo var_dump(parseExpression('8.8')); // int(64) echo var_dump(parseExpression('23*347')); // int(7981) echo var_dump(parseExpression('23-347')); // int(-324) echo var_dump(parseExpression('8/3')); // float(2.6666666666667) echo var_dump(parseExpression('8%7')); // int(1) echo var_dump(parseExpression('2^2')); // int(4) echo var_dump(parseExpression('2 ^ 2')); // int(4), whitespace ok echo var_dump(parseExpression('')); // bool(false) echo var_dump(parseExpression()); // bool(false) echo var_dump(parseExpression('1')); // bool(false) echo var_dump(parseExpression('0')); // bool(false) echo var_dump(parseExpression(1)); // bool(false) echo var_dump(parseExpression('whats 23x347?')); // int(7981) </code></pre> <p>正则表达式的快速解释:</p> <ul> <li>第一个括号匹配并捕获一个或多个数字</li> <li>0个或更多空格,匹配但未捕获</li> <li>第二个括号匹配并从列表中捕获一个数学运算符,注意特殊字符的反斜杠转义</li> <li>0个或更多空格,匹配但未捕获</li> <li>第三个括号匹配并捕获一个或多个数字</li> </ul> <p>可选的空格匹配允许使用“2*2”或“2 * 2”等短语</p> </answer> <answer tick="true" vote="0"> <p>你可以通过两种方式做到这一点。 preg_split 是最简单的,但 preg_match 也可以,只是多了一点工作。 </p> <p>preg_split</p> <pre><code>$equation = "23x347"; list($first_number, $second_number) = preg_split("/x/",$equation); print_r(array('first_number' => $first_number, 'second_number' => $second_number)); </code></pre> <p>preg_split 会将两个值作为单独的列表元素返回。</p> <pre><code>Array ( [first_number] => 23 [second_number] => 347 ) </code></pre> <p>预匹配</p> <pre><code>$equation = "23x347?"; list($first_number, $second_number) = preg_match("/(\d+)x(\d+).*/",$equation); print_r($matches); </code></pre> <p>preg_match 将填充 $matches 数组</p> <pre><code>Array ( [0] => 3x347? [1] => 23 [2] => 347 ) </code></pre> </answer> </body></html>
我一直致力于将特定格式的字符串转换为数组。使用爆炸分割字符串似乎不是正确的方法,而且我不太擅长正则表达式。所以我的问题...
Power Automate Desktop 中的正则表达式/设置文本解析
我正在使用从 Power Automate Desktop 中的收据内容 OCR 中提取的列表,并希望筛选特定的数字组(价格)。问题是 00-00 日期格式的数字会保留
有没有办法将下面所示形式的字符串转换为 PHP 中的数组? {1,2,3,4} 该字符串存储在这样的数据库中,我无法控制将内容插入到
我正试图打破这根弦, 南非荷兰语 = af 阿尔巴尼亚语=平方 阿姆哈里语 = am 阿拉伯语 = ar 亚美尼亚语 = hy 阿塞拜疆 = az 巴斯克=欧盟 白俄罗斯语=是 孟加拉语 = 十亿 比哈里 = bh 保加利亚语 = bg 缅甸人...
我有一个像这样的数组 大批 ( [select_value_2_1] => 7 ) 我想将索引分解为数组([0]=select_value,[1]=2,[2]=1)
将包含类似于 PHP 数组语法的键值对的分隔字符串解析为关联数组
我想从此字符串创建一个数组,存储在数据库中: $string = '"2148" => "50","2050" => "2","2403" => "1"'; $id_value...
我正在尝试从字符串构建一个二维数组。该字符串具有以下结构: $workers = "姓名1:年龄1/姓名2:年龄2/姓名3:年龄3"; 这个想法是将数组分解为“人...
我有这一行绳子 水果-香蕉|苹果|橙子:食品-薯条|香肠:甜点-冰淇淋|苹果派 :(冒号)是主要主题的分隔符,|是不同的分隔符...
我资助了一些帖子将数据分解为数组,但我的有点具体,因为数据有两部分 我有这个 标题=标题1|链接=链接1 标题=标题2|链接=链接2 我需要的结果是这样的 大批 ( [0...
我已经构建了以下代码,它正在执行我的代码的数组部分所需的操作。 $demo = '[url=https://www78.zippyshare.com/v/AQg3SYMQ/file.html]1.就像 Im Fabo.mp3[/url][url=https://www78.
这是一个字符串.. $string = "foo1: bar1, foo2: bar2, foo3: bar3"; 使用 , delimeter 进行爆炸 $爆炸=(“,”,$字符串); 现在 $exploded 数组包含: foo1:酒吧1 foo2:酒吧2 foo3:巴...
我有一个二维数组,它是从字符串中分解出来的。一旦爆炸,输出如下: ---> 0 - 16~4~0.0~~~~假~~~~ ---> 1 - 1000.0~21.75~L~1~2.0~2.0~L~2~ ---> 2 - ---&g...
如果我有字符串: 123+0,456+1,789+2, 我了解我可以执行以下操作: $测试 = 123+0,456+1,789+2,; $test = 爆炸(",", $test); 这会创建 ',' 之间每个部分的数组...
我有一个 php 字符串,看起来像这样...... [line1]这是一些测试文本[/line1][line2]这是第2行文本[/line2][line3]这是第3行文本[/line3] 我正在尝试使用它并创建一个数组...
寻找有关最佳方法的建议(我知道有很多选择): 取一个这样的变量: $args = 'post_type=post&order_by=DESC&limit=10'; 创建一个函数来
假设我有一个像这样存储的数组: 大批 ( [0] => 宽度:650px;边框:1px 实线#000; [1] => 宽度:100%;背景:白色; [2] => 宽度:100%;背景:黑色; ...
我有一根像这样的绳子 $sitesinfo = '站点 1 标题-example1.com/ 站点 2 标题-example2.com/ 网站 3 标题-example3.com/ 站点 4 标题-example4.com/ 站点 5 标题-example5.com/'; 我以前...
我有一个像下面这样的字符串 $num = "20142311.235504"; 我想按照以下格式分割字符串 $日期['年份'] = 2014; $日期['月份'] = 23; $日期['日'] = 11; $日期['小时'] = 23; $date['我...