【发布时间】:2014-03-31 08:08:37
【问题描述】:
我尝试制作一个工具,您可以在其中输入网站,当您单击提交按钮时,它会卷曲所有文本。
在所有卷曲之后,将其从标签中剥离,并计算单词。它最终是一个名为$frequency 的数组。如果我使用<pre> 标签回显它,它将向我展示一切都很好! (注意:我将内容放在一个文件中,$homepage = file_get_contents($file);,这是我在代码中使用的,我不知道这是否重要)
但是我并不关心 or 这个词是否在网站上出现 200 次,我只想要重要的词。所以我做了一个包含所有常用词的数组。最终在 $common_words 变量中设置。但我似乎无法找到一种方法来替换在$frequency 中找到的所有单词,如果它们也在$common_words 中找到,则用"" 替换它们。
经过一番研究,我发现了这段代码:
$string = 'sand band or nor and where whereabouts foo';
$wordlist = array("or", "and", "where");
foreach ($wordlist as &$word) {
$word = '/\b' . preg_quote($word, '/') . '\b/';
}
$string = preg_replace($wordlist, '', $string);
var_dump($string);
如果我复制粘贴它,它可以正常工作,从字符串中删除 or, and, where。
但是用$frequency 替换$string 或用$common_words 替换$wordlist 要么不起作用,要么给我一个错误,例如:Delimiter must not be alphanumeric or backslash
如果没有,我希望我已经正确地提出了我的问题。请告诉我!
提前致谢
编辑:好的,我已经缩小了很多范围。首先,我忘记了foreach ($wordlist as &$word) { 中的&
但由于它正在计算所有的单词,它所替换的单词仍然被计算在内。请看这 2 个屏幕截图以了解我的意思:http://imgur.com/oqqZR3h,xHEZKRz#0
【问题讨论】:
-
我不确定你的问题是什么,但你的正则表达式是如何工作的?它不应该像 /or|and|where/ 吗?好久没做PHP了,不习惯这么粗糙的API,但是从这里看好像不是你在做的。
-
@Michael 最后的一段代码是我在互联网上找到的,如果我复制粘贴并运行这段代码,它工作正常,它会删除单词或,以及从哪里细绳。但是用我自己的变量替换 $string 和 $wordlist 不起作用
-
它对我有用,即使我更改了单词表。我真的不明白你有什么问题?这一切都很好!