我使用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失败的原因是什么?
由于
答案 0 :(得分:1)
我使用数据库中的字符串测试了您的代码并发生了相同的错误,更改了常规表达式,您将获得解决方案。使用以下表达式:
$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,因此表达式不起作用
答案 1 :(得分:0)
你不需要正则表达式,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
...