无法在php

时间:2017-09-12 18:59:39

标签: php

我有一个文本文件,我想检查文件是否包含字符串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.我该怎么办,如果我知道我想要找到的单词在文本文件中包含引号?

1 个答案:

答案 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&quot;dddddd时,您可以找到wor"dddddd

所以,解决方案:

wor&quot;dddddd

加分:您可以用一行替换$id = 'wor"dddddd'; $content= file_get_contents("file.txt"); // following lines remain unchanged 上的循环:

$split