正则表达式PHP preg_match_all
我是一个自以为是的PHP初学者,我还在学习正则表达式。下面是我在使用正则表达式PHP preg_match_all,php,arrays,preg-match-all,Php,Arrays,Preg Match All,我是一个自以为是的PHP初学者,我还在学习正则表达式。下面是我在使用preg\u match\u all和数组时遇到的一个问题 我的阵列正好包含以下信息: ;;CARLOS||ANDREW||STEPH||SUE||JUDY||HAROLD||JAMES||KATIE||JESSICA;; 我要做的是分别显示每个名称大约有250个不同的名称,数组总是以;;并且总是以;;这是我的问题,首先,我的数组可以加载,但只加载名字,方法是: preg_match_all('/^(.+?)\|\|/
preg\u match\u all
和数组时遇到的一个问题
我的阵列正好包含以下信息:
;;CARLOS||ANDREW||STEPH||SUE||JUDY||HAROLD||JAMES||KATIE||JESSICA;;
我要做的是分别显示每个名称大约有250个不同的名称,数组总是以;;并且总是以;;这是我的问题,首先,我的数组可以加载,但只加载名字,方法是:
preg_match_all('/^(.+?)\|\|/', $body, $part);
foreach ($part[1] as $part){
print_r($part);
结果是;;卡洛斯
其中,$body
是一个巨大的名称列表(包含250多个名称的数组)
预期结果:
CARLOS
ANDREW
STEPH
JUDY
HAROLD
JAMES
KATIE
JESSICA
请理解我无法更改输入数组,它就是这样。因此,基本上在第一个数组中,我加载了整个列表,然后我需要将其按|个字符进行拆分
谢谢你的建议。
;;CARLOS | |
是可用的最小匹配,这正是您要求正则表达式引擎执行的操作。请尝试以下正则表达式:
preg_match_all('/(?<=\|\||;;)(.+?)(?=\|\||;;)/', $body, $part);
print_r($part[1]);
preg_match_all('/(?这里不需要使用正则表达式。并且可以正常工作
$str = trim($body, ";"); // Remove semi-colons
$arr = explode("||", $str); // Return array of strings delimited by double pipes
print_r($arr);
输出
Array
(
[0] => CARLOS
[1] => ANDREW
[2] => STEPH
[3] => SUE
[4] => JUDY
[5] => HAROLD
[6] => JAMES
[7] => KATIE
[8] => JESSICA
)
如果你想要你想要的结果准确,那么上面的输出
echo implode(" ", $arr);
// Outputs: CARLOS ANDREW STEPH SUE JUDY HAROLD JAMES KATIE JESSICA
我会使用explode()
<?php
$string=";;CARLOS||ANDREW||STEPH||SUE||JUDY||HAROLD||JAMES||KATIE||JESSICA;;";
$names=explode("||", substr($string,2,strlen($string)-4));
print_r($names);
你看过和str_replace
删除分号了吗?我不知道你可以用trim来删除分号!酷!+1!:-)谢谢谢谢谢谢,这开始让我头疼了!今天我学习了内爆和修剪:d这非常好!!非常适合我正在做的事情,但我不知道为什么这样做:(?@user1294097:The(?…)
用于零宽度断言。它们的意思是“确保指定的字符在那里,但实际上不匹配”。这会将字符留给其余的匹配项。此外,如果字符串完全如图所示,则使用trim
和explode
是更好的解决方案。
<?php
$string=";;CARLOS||ANDREW||STEPH||SUE||JUDY||HAROLD||JAMES||KATIE||JESSICA;;";
$names=explode("||", substr($string,2,strlen($string)-4));
print_r($names);
Array
(
[0] => CARLOS
[1] => ANDREW
[2] => STEPH
[3] => SUE
[4] => JUDY
[5] => HAROLD
[6] => JAMES
[7] => KATIE
[8] => JESSICA
)