当前位置: 首页 > 知识库问答 >
问题:

php preg_split查找字符串中的所有单词无效

吴胜涝
2023-03-14

我使用preg_split将字符串拆分为单词。

但是,它不适用于从mysql文本列获取的特定字符串。

如果我手动将字符串分配给变量,它将正常工作,但在从数据库获取字符串时不会正常工作。

下面是我正在使用的简单代码:

//The failing string. When manually assigned like this it works correctly

$string = "<p><strong>Iden is lesz lehetoseg a foproba és a koncert napjan ebedet kerni a MUPA-ban. Ára 1000-1200 Ft körül várható. Azoknak, akik még nem jártak a MUPA-ban ingyenes bejarasi lehetoseget biztositunk. Tovabba segitunk a pesti szallas megszervezeseben is, ha igenyt tartotok ra.</strong></p>";

$string = strip_tags(trim($string));

$words = preg_split('/\PL+/u', $string, null, PREG_SPLIT_NO_EMPTY);

以下是调用数据库中的字符串时preg_split返回的结果:

array(1) { [0]=> string(269) "Iden is lesz lehetoseg a foproba és a koncert napjan ebedet kerni a MUPA-ban. Ára 1000-1200 Ft körül várható. Azoknak, akik még nem jártak a MUPA-ban ingyenes bejarasi lehetoseget biztositunk. Tovabba segitunk a pesti szallas megszervezeseben is, ha igenyt tartotok ra." }

有人知道是什么原因导致此字符串的preg_split失败吗?

谢啦

共有2个答案

汪鸿志
2023-03-14

您不需要正则表达式,explode将完成以下工作:

$string = "<p><strong>Iden is lesz lehetoseg a foproba és a koncert napjan ebedet kerni a MUPA-ban. Ára 1000-1200 Ft körül várható. Azoknak, akik még nem jártak a MUPA-ban ingyenes bejarasi lehetoseget biztositunk. Tovabba segitunk a pesti szallas megszervezeseben is, ha igenyt tartotok ra.</strong></p>";
$string = strip_tags(trim($string));
$words = explode(" ", $string);
print_r($words);

输出:

Array
(
    [0] => Iden
    [1] => is
    [2] => lesz
    [3] => lehetoseg
    [4] => a
    [5] => foproba
    [6] => és
    [7] => a
    [8] => koncert
...

表意文字演示

宋建本
2023-03-14

我用数据库中的字符串测试了你的代码,发生了同样的错误,改变常规表达式,你就会有解决方案。使用这个表达式:

$words = preg_split('/[\s]/', $string, null, PREG_SPLIT_NO_EMPTY);


//var_dump result

array(42) {
  [0]=>
  string(4) "Iden"
  [1]=>
  string(2) "is"
  [2]=>
  string(4) "lesz"
  [3]=>
  string(9) "lehetoseg"
...
}

更新:修饰符/u用于UTF 8,可能您的数据库不在UTF8中,因此表达式不起作用

 类似资料:
  • 问题内容: 我需要在HTML源代码中找到一个单词。我还需要计算发生的次数。我正在尝试使用正则表达式。但它说找到0个匹配项。 我正在使用正则表达式,因为我认为这是最好的方法。如果有更好的方法,请告诉我。 我需要在HTML源代码中找到单词“ hsw.ads”的出现。 我已采取以下步骤。 但是计数是0; 请让我知道您的解决方案。 谢谢。帮助寻求者 问题答案: 您应该尝试一下。 在字符串中传递要搜索的单词

  • 问题内容: 我正在尝试查找“ |”的所有出现 在一个字符串中。 但我得到一个错误: 问题答案: 功能: 将返回的索引列表中的出现。

  • 问题内容: 如何递归地查找字符串中最长的单词? 编辑 说完了,谢谢大家。这是修改后的代码。 问题答案: 首先,让我们假设句子字符串参数没有任何前导或尾随空格。您可以通过调用trim()来处理递归情况。 然后,我们需要定义两种情况,即基本情况和递归情况。 基本情况是找不到空格,即传入的句子只是一个单词。在这种情况下,只需返回句子即可。 在递归的情况下,我们将得到第一个单词,其余的则与您一样。在句子的

  • 问题内容: 我有一个字符串“ ”。我想查找一个单词在字符串中出现多少次。示例hello发生2次。我尝试了只打印字符的方法- 我想学习如何找到字数统计。 问题答案: 如果要查找单个单词的计数,请使用: 使用和汇总所有单词:

  • 问题内容: 我需要解析一个HTML文档并查找其中所有出现的字符串。 我目前将HTML加载到字符串变量中。我只需要字符位置,这样我就可以遍历列表以在字符串之后返回一些数据。 该函数仅返回第 一个 匹配项。如何 全部 归还呢? 问题答案: 在不使用正则表达式的情况下,类似这样的方法应该可以返回字符串位置:

  • 问题内容: 我正在尝试查找Java字符串中所有出现的子字符串。 例如:在“ ababsdfasdfhelloasdf”中搜索“ asdf”将返回[8,17],因为有2个“ asdf”,一个在位置8,另一个在17。在“ aaaaaa”中搜索“ aa”将返回[0, 1,2,3,4],因为位置0、1、2、3和4处有一个“ aa”。 我尝试了这个: 可以在Python中解决此问题,如下所示: 其中“ wo