提问人:Jenemj 提问时间:9/8/2023 最后编辑:Jenemj 更新时间:9/8/2023 访问量:36
PHP 在找到子字符串之前提取两个字符串之间的子字符串
PHP extract a substring between two strings before a substring found
问:
我有这个转义的html代码字符串:
$html="
...
euro�<strong>0,00</strong>�sono relativi a Operazioni finanziarie di <strong>Importo Ridotto</strong>;<br/>
euro�<strong>0,00</strong>�sono relativi a Operazioni finanziarie di <strong>Rischio Tripartito</strong>;<br/>
euro�<strong>25.000,00</strong>�sono relativi a Operazioni finanziarie ai sensi del <strong>Dl Liquidita' 08/04/2020 art.13 lettera m)</strong>;<br/>
...";
如果子字符串之后匹配了“”和“”之间的值(“Operazioni finanziarie”,“Rischio Tripartito”...
基本上,如果我找到子字符串,我需要从该位置反向提取两个子字符串之间的值。<strong>
</strong>
我想使用类似的东西:
$stringBefore=strstr($html,$stringToFind,true);
然后找到字符串“between”的边界,$stringBefore有两个具有负偏移量的 strpo。
答:
0赞
user2342558
9/8/2023
#1
您可以使用此正则表达式来获取该值:
\<strong>(.+?)\<(?:\/strong>).+(?:Operazioni finanziarie|Rischio Tripartito|etc)
<?php
$html="
...
euro�<strong>0,00</strong>�sono relativi a Operazioni finanziarie di <strong>Importo Ridotto</strong>;<br/>
euro�<strong>0,00</strong>�sono relativi a Operazioni finanziarie di <strong>Rischio Tripartito</strong>;<br/>
euro�<strong>25.000,00</strong>�sono relativi a Operazioni finanziarie ai sensi del <strong>Dl Liquidita' 08/04/2020 art.13 lettera m)</strong>;<br/>
...";
preg_match_all("/\<strong>(.+?)\<(?:\/strong>).+(Operazioni finanziarie|Rischio Tripartito|etc)/", $html, $matches);
print_r($matches);
输出:
Array
(
[0] => Array
(
[0] => <strong>0,00</strong>�sono relativi a Operazioni finanziarie
[1] => <strong>0,00</strong>�sono relativi a Operazioni finanziarie di <strong>Rischio Tripartito
[2] => <strong>25.000,00</strong>�sono relativi a Operazioni finanziarie
)
[1] => Array
(
[0] => 0,00
[1] => 0,00
[2] => 25.000,00
)
[2] => Array
(
[0] => Operazioni finanziarie
[1] => Rischio Tripartito
[2] => Operazioni finanziarie
)
)
评论