我有一个文本文件,我想检查文件是否包含字符串wor"dddddd
。让我们假设这是文本文件的内容:
...,sometext,moretext,wor"dddddd,867767,3468647,sometext,...
这是我的代码,我不知道它为什么不起作用(打印8而不是3):
<?php
$id='wor\"dddddd';
$fopen = fopen("file.txt", 'r');
$content= htmlspecialchars(file_get_contents("file.txt"));//
$split=explode(",", $content);
$arr_len=count($split);
$pos=0;
$result=array();
//finding the position of the word in the array
foreach ($split as $x){
if(stripos($id, $x)!==false) {
break;}
$pos++;
}
echo $pos;//should print 3, but it prints 8 i.e it's not find the word wor"dddddd
?>
我不知道为什么如果在它找不到的单词中有引号,我试图添加反斜杠\
(我的代码中的第2行),你可以看,但仍然是输出8.我该怎么办,如果我知道我想要找到的单词在文本文件中包含引号?
答案 0 :(得分:2)
这里有一对或错误。
首先,在字符串
中https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?format=json&key=<my_key>
您不需要在单引号字符串中转义$id='wor\"dddddd';
。因此,您试图找到"
而不是'wor\"dddddd'
。很明显,这不会发生。
下一个错误来自使用'wor"dddddd'
。
此功能会将引号变为html-entities,因此您将htmlspecialchars
而不是wor"dddddd
。同样,当您拥有wor"dddddd
时,您可以找到wor"dddddd
。
所以,解决方案:
wor"dddddd
加分:您可以用一行替换$id = 'wor"dddddd';
$content= file_get_contents("file.txt");
// following lines remain unchanged
上的循环:
$split