2013-12-08 66 views
0

我正在使用下面的代码突出显示file_get_content中的一个单词并转到锚点。突出显示部分搜索结果

$file=' 
IAR6=1002 
SHF6=1 
REF6=0002 
TY7=2 
DATE7=20130820182357 
STAT_N7=1002 
SEQ7=0002110000001 
STA7=000005 
TY8=2 
DATE8=20130820182429 
STAT_N8=1002 
SH8=1 
OP8=S123 
SEQ8=0002120000081 
'; 

$Seq = 0002110000001; 
$text = preg_replace("/\b($Seq)\b/i", '<span class="highlight"><a name="here">\1</a></span>', $file); 

现在这个亮点:0002110000001

我想强调同样的指数的一部分。

例如: 寻找0002110000001

突出这一部分TXT的仅在数为7

TY7=2 
DATE7=20130820182357 
STAT_N7=1002 
SEQ7=0002110000001 
STA7=000005 

任何帮助将不胜感激。编辑: 我试图更具体。 文件包含大量的代码部分总是由TYX启动(x为自动编号)

我有我的搜索序列号,在离0002110000001 preg_replace函数( “/ \ B($ SEQ)\ B/I” ,“\ 1找到0002110000001和higlight他们。

我需要的是higlight是什么,而不是只0002110000001.

希望这是很清楚的我的英文不好

感谢

由于TY7和TY8之间

回答

0

您可以使用stripos()explode()在PHP

<?php 
$file=' 
IAR6=1002 
SHF6=1 
REF6=0002 
TY7=2 
DATE7=20130820182357 
STAT_N7=1002 
SEQ7=0002110000001 
STA7=000005 
TY8=2 
DATE8=20130820182429 
STAT_N8=1002 
SH8=1 
OP8=S123 
SEQ8=0002120000081 
'; 
//$Seq = "0002110000001"; 
$Seq = "7"; 
$new_arr=explode(PHP_EOL,$file); 
foreach($new_arr as $k=>$v) 
{ 
if(stripos($v,$Seq)!==false) 
{ 
echo "$v\n"; 
} 
} 

OUTPUT:

TY7=2 
DATE7=20130820182357 
STAT_N7=1002 
SEQ7=0002110000001 
STA7=000005 
+0

感谢回答,但这种提取物的一部分,而不是higlight,如果我有typ71这不起作用。我们的目标是让我们去看看锚点部分,而不是截断(文件可以包含1500多个id) – user3079885

+0

'typ71'应该匹配什么? –

+0

对不起,这不是TYP而是TY! 。我可能错过了,文件例证只是文件的一小部分。它包含超过1500个以TYx(x =自动编号)开头的代码部分,所以TY1,TY2 ...我开始编辑我的文章以更具体。 – user3079885