gpt4 book ai didi

javascript - 为什么我的 search() 无法找到特殊字符?

转载 作者:行者123 更新时间:2023-11-30 10:04:26 25 4
gpt4 key购买 nike

我认为这是一个字符编码问题。只要字符串包含某些特殊字符(例如 ()* 括号、星号和数字),我的 javascript 搜索就无法识别该字符串。

JavaScript 相当简单。我在字符串 (str) 中搜索值 (val):

n = str.search(val);

我搜索的字符串是用PHP写到一个txt文件中的...

$scomment = $_POST['order'];
$data = stripslashes("$scomment\n");
$fh = fopen("comments.txt", "a");
fwrite($fh, $data);
fclose($fh);

...然后用 PHP 检索...

$search = $_GET["name"];
$comments = file_get_contents('comments.txt');
$array = explode("~",$comments);
foreach($array as $item){if(strstr($item, $search)){
echo $item; } }

...并使用 AJAX 将其放入我的 HTML 中...

xmlhttp.open("GET","focus.php?name="+str,true);
xmlhttp.send();

我的 HTML 编码为 UTF-8。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

问题是当我搜索()字符串时,无法识别特殊字符。

我没有真正看到对 PHP 创建的文本进行编码的选项,所以我假设它也是 UTF-8。这个假设不正确吗?

如果这是编码问题,如何更改用PHP编写的txt文件的编码?如果是上面的代码引起的,请问是哪里出了问题?

最佳答案

search() 函数采用正则表达式。如果给出一个字符串,它被转换成一个。正因为如此,任何特殊字符都有特殊的含义,它不会像预期的那样工作。您需要转义特殊字符。

Syntax

str.search(regexp)

Parameters

regexp

A regular expression object. If a non-RegExp object obj is passed, it is implicitly converted to a RegExp by using new RegExp(obj).

如果您想搜索文本,请改用 str.indexOf(),除非您需要正则表达式。如果是这样,请参阅此处了解如何转义字符串:Is there a RegExp.escape function in Javascript?

关于javascript - 为什么我的 search() 无法找到特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com