使用字母数字、逗号、句点、感叹号等preg_match和注册表达式


preg_match and reg expression using alphanumeric, commas, periods, exclamations, etc

我花了很长时间想出了一个体面的方法,使这个if语句在文件中搜索这些代码。我设置了要从中读取的文本文件:

我的文件.txt

r)
0Y7
1a6
q.
@g
@(
#a
!P
T[
V}
0,

以下是我所做的事情的简要介绍。

$subject = file_get_contents(fvManager_Path . 'myfile.txt');
if ( preg_match('/^[a-zA-Z0-9,]+$/',$result['fmbushels_itemCode'], $subject) ) { 

基本上,我正在尝试逐行搜索文本文件以查看整个字符串是否存在。它们也区分大小写。

$result['fmbushels_itemCode'] 来自 SQL 查询,并且始终在文本中返回类似于上述的代码。

我将不胜感激对此的任何帮助。如果有人知道更好的方法或不同的命令,我也愿意试一试:)

编辑:

private function _fvShareBushels() {
$subject = file_get_contents(fvManager_Path . 'myfile.txt');
if (count($vShareArray) > 0) {
$vCntMoves = count($vShareArray);
for ($vI = 0;$vI < $vRunMainLoop;$vI++) {
sell $result['fmbushels_itemCode']);    
}
}
}

这是一个大代码的片段。由于帖子限制,我不得不撕掉大部分。我可以合作的领域是:

if (count($vShareArray) > 0) {

如果我能把它变成这样:

if (count($vShareArray) > 0 && $result['fmbushels_itemCode'] **is not in** $subject) {

如果你想逐行做,请使用 file() 函数。

$f = file(fvManager_Path . 'myfile.txt');
foreach($f AS $line){
    // $line is current line at file
}

我不确定您是否完全了解preg_match的工作原理。第一个参数是正则表达式模式,第二个参数是要将模式匹配到的参数,第三个参数是匹配数组。因此,对于第二个参数中匹配的每个有效模式,都会在数组上创建一个新索引。

我不是100%在你想要完成的事情上。您是否正在尝试查看文件中是否存在$result['fmbushels_itemCode']

如果以上情况是正确的,您只需执行以下操作:

$f = file('myfile.txt');
array_map('trim', $f);
if(in_array($result['fmbushels_itemCode'], $f)){
    // success
}