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