【发布时间】:2017-10-23 16:11:33
【问题描述】:
假设我们有以下数据,其中的代码与我们想要的模式匹配,在这种情况下,我们要捕获所有数字和 unicode 分数。
$array = array('1 ½ cups','¼ cup','2 tablespoons', '½ cup', '1/3 cup', '2 large', '1 ½ teaspoons', '2 tablespoons', 'Large egg', '1 teaspoon', '¼ teaspoon');
foreach($array as $arr){
preg_match_all("/^(?:[\p{Pd}.\/\s-]*[\d↉½⅓⅔¼¾⅕⅖⅗⅘⅙⅚⅐⅛⅜⅝⅞⅑⅒⅟])+/um", $arr, $output);
foreach($output[0] as $data){
$try[] = $data;
}
}
如果我们print_r($try) 我们得到:
Array
(
[0] => 1 ½
[1] => ¼
[2] => 2
[3] => ½
[4] => 1/3
[5] => 2
[6] => 1 ½
[7] => 2
[8] => 1
[9] => ¼
)
数组中有 11 项,其中一项是完整的文本,在本例中为 大鸡蛋。
我想要做的是让 preg_match_all 为该迭代返回一个空值,所以我们会得到这个:
Array
(
[0] => 1 ½
[1] => ¼
[2] => 2
[3] => ½
[4] => 1/3
[5] => 2
[6] => 1 ½
[7] => 2
[8] =>
[9] => 1
[10] => ¼
)
我尝试了什么?
我查看了 preg_match_all manual 但我找不到任何可以让我找到答案的东西,此时我认为它可能必须在正则表达式模式下完成,但我'我现在完全不确定。
【问题讨论】:
-
我没有办法知道。如果有匹配项,您可以使用
preg_match检查并使用条件。 eval.in/885295