1
我有删除任何字母不超过3个字母的代码。preg_replace允许某些字符,删除短字
$result = trim(preg_replace
("/[^a-z0-9']+([a-z0-9']{1,3}[^a-z0-9']+)*/i"," ",$_POST['query']));
虽然有问题。首先,我不知道如何允许某些字符(波兰语是准确的,如ś,ć,ż等)。
其次,preg_replace
仅当它们位于字符串中间时才删除短语,所以如果字符串类似于“我喜欢某事”或更糟糕“我喜欢它”,那么“我”和“它”将会待在这。唯一可以正常工作的情况是,当字符串就像“这是某事”(“is”将被从字符串中删除)。
它的工作原理,但它输出的额外 ''(空字符串)。这是一个问题,因为$ result将用于搜索我的表,并且当查询中有LIKE'%%'时,它将逐字读取所有内容。它比我迄今为止尝试过的任何东西都好,但我必须摆脱空字符串 – Vortic
@Vortic,没问题 - 替换为:($ re,“”,$ str));一个空的空间,或者简单的空串,如果这是目标? ($重, “”,$ STR));? – sinisake
这显示了发生了什么http://i.imgur.com/IBTrBeh.png基本上,您的代码以某种方式在某处创建空字符串,稍后使用空字符串搜索表(我强调所有空字符串都是红色的)。通常我会忽略那个空字符串,但因为它会导致整个表格被修复。我按照你的建议替换了代码,但结果仍然相同。 – Vortic