在字符串中的某个文本周围获取两个单词(数字)



有一个特定的内容(来自网页(,我需要获得某个列表的两个数字。基本上列表如下:

。。。。。12中的10…

20中的1…

100中的20…

等等。对我来说,我需要得到单词"周围的这些数字;从";,这样我以后可以用它们进行某些计算。

我对此进行了研究,并尝试了不同的方法来使用strpos或strstr执行它,但都没有成功。有人知道如何完成这样的事情吗?

$text = "..... 10 from 12 etc....
..... 1 from 20....
..... 20 from 100...";
$r = preg_match_all('~(d+) *from *(d+)~u',$text,$match, PREG_SET_ORDER);
var_export($match);

输出:

array (
0 => 
array (
0 => '10 from 12',
1 => '10',
2 => '12',
),
1 => 
array (
0 => '1 from 20',
1 => '1',
2 => '20',
),
2 => 
array (
0 => '20 from 100',
1 => '20',
2 => '100',
),
) 

解释:

\d+一位或多位

(\d+(括号中的序列->结果数组中的数字

*否,一个或多个空间

来自的单词

下面是一个可以使用爆炸的示例:

<?php
/* the text with many different gaps and mess! */ 
$text = "wlfsdjf;sd sdfljsdfk  kfgjdlg d 10 from 200 kflgjdkgdklgsd slfksjd
dfgdf fgdlkjdf d  20 from 30 ldk;lfsd
dflksdjf 40 from 50 dkf;sd sdjfs ";
/* main array */
$array = explode("n",$text);
echo '<pre>';
print_r($array);
/* looping and clearing out our values per line */
foreach($array as $k => $line){
$f = explode(" ",explode(" from ",$line)[0]);
$f = array_pop($f); 
$numbers[$k]['first'] = $f;
$s = explode(" ",explode(" from ",$line)[1]);
$s = $s[0];
$numbers[$k]['second'] = $s;

}
/* our new array set per line */
print_r($numbers);

将返回:

Array
(
[0] => wlfsdjf;sd sdfljsdfk  kfgjdlg d 10 from 200 kflgjdkgdklgsd slfksjd
[1] => dfgdf fgdlkjdf d  20 from 30 ldk;lfsd
[2] => dflksdjf 40 from 50 dkf;sd sdjfs 
)
Array
(
[0] => Array
(
[first] => 10
[second] => 200
)
[1] => Array
(
[first] => 20
[second] => 30
)
[2] => Array
(
[first] => 40
[second] => 50
)
)

相关内容

最新更新