在 PHP 中使用 preg_grep() 查找字符串之前或之后的字符

Posted

技术标签:

【中文标题】在 PHP 中使用 preg_grep() 查找字符串之前或之后的字符【英文标题】:Find character before or after of string using preg_grep() in PHP 【发布时间】:2017-05-09 11:38:04 【问题描述】:

我需要使用 php preg_grep() 从数组中查找单词之前或之后的任何字符。我有一个像下面这样的数组

$findgroup = array("aphp", "phpb", "dephpfs", "potatoes");

我需要从数组中查找在单词“php”之前或之后(任一侧,而不是两侧)具有单字符或双字符的“php”单词的值。结果应该是数组中的 'aphp','phpb' 字。

我尝试使用以下代码但不起作用。

$result[] = preg_grep("/(.1)php(.1)/", $findgroup);

【问题讨论】:

【参考方案1】:

锚定你的正则表达式并在前后添加量词:

$findgroup = array("aphp", "phpb", "dephpfs", "potatoes", "aphpb", "php");
$result = preg_grep("/^(?:.1,2php|php.1,2)$/", $findgroup);       
print_r($result);

输出:

Array
(
    [0] => aphp
    [1] => phpb
)

【讨论】:

嗨,我需要其他帮助。如果数组中包含值“php”,则您显示的方法是在结果中返回“php”。但我不需要它。那么有什么方法可以返回具有固定长度的数组值的值。也就是说结果应该包含'aphp','phpb'(固定长度4)。但结果不应包含“php”。 @SuUbha:将量词 0,2 更改为 1,2,请参阅我的编辑。

以上是关于在 PHP 中使用 preg_grep() 查找字符串之前或之后的字符的主要内容,如果未能解决你的问题,请参考以下文章

如何使用数组中的 preg_grep 查找仅/更多指定字母的单词?

PHP preg_grep 多文件

preg_grep 输出部分匹配

php正则表达式之preg_grep

PHP preg_grep 错误?

PHP正则