2016-11-29 64 views
0

我有一個預浸更換模式多數民衆贊成在工作相當不錯的phpliveregex.com的preg_replace和隱藏字符或隱藏編碼

(\>*\s?)_______________________________________________\n(\>*\s?)(talk|tagging|talk-us|talk-gb|talk-de|osm-talk) mailing list\n(\>*\s?)(talk|tagging|talk-us|talk-gb|talk-de|osm-talk)@openstreetmap.org\n(\>*\s?)https://lists.openstreetmap.org/listinfo/(talk|tagging|talk-us|talk-gb|talk-de|osm-talk) 

例如在這裏,它會刪除所有的郵件列表的簽名:

>> Text, blablabla 
>> 
>> _______________________________________________ 
>> talk mailing list 
>> [email protected] 
>> https://lists.openstreetmap.org/listinfo/talk 
> 
> 
> 
>------------------------------------------------------------------------ 
> 
>_______________________________________________ 
>talk mailing list 
>[email protected] 
>https://lists.openstreetmap.org/listinfo/talk 

-- 
personal signature, blabla._______________________________________________ 
talk mailing list 
[email protected] 
https://lists.openstreetmap.org/listinfo/talk 

但當我用preg_replace在php中完全相同時,只有三個郵件列表簽名中的最後一個被刪除。那隻與給定的變量。當我將可變內容回顯給瀏覽器時,將其複製到像$text = 'long echoed text'這樣的新變量中即可。

$slugs = 'talk|tagging|talk-us|talk-gb|talk-de|osm-talk';    
$pattern = '!(\>*\s?)_______________________________________________\n(\>*\s*)('.$slugs.') mailing list\n(\>*\s*)('.$slugs.')@openstreetmap.org\n(\>*\s*)https://lists.openstreetmap.org/listinfo/('.$slugs.')!mi';    
return preg_replace($pattern,'',$text); 

所以我想在原始變量中必須有一些隱藏的編碼或隱藏的字符。但是,我怎樣才能找出問題所在?

編輯:它看起來像我現在有一個問題,線性斷續和>事後,但我仍然不知道如何能夠確切地檢查它,以及如何解決它。

EDIT2:當我嘗試$文字== $文本2(其中$文字是原來的$文本2是回聲$文本的結果),我得到FALSE

TL; DR:當我使用給定變量它不起作用。但是,當我將變量回顯給瀏覽器時,將文本複製到一個新變量中,它可以工作。那裏隱藏着什麼?

+0

嘗試使用u修飾符,如果你有編碼問題。 –

+0

它的工作原理,請參閱http://ideone.com/BdG43Y –

+1

是的,它有效,就像它在phpliveregex上做的一樣,當我將文本放入一個變量時,它就像它一樣(對不起,但是你甚至讀過整個問題? )。我更新了我的問題,它看起來像是換行符,因爲我有一個與另一個正則表達式相似的問題 – Asara

回答

1

現在,上述表達式將換行符編碼爲「\ n」。但是,換行符也可以編碼爲「\ n」,「\ r」和「\ r \ n」,具體取決於環境。因此,而不是\ N,你應該使用:

[\n\r]+ 

參見this questionWikipedia相應的文章。

+1

感謝您的回答,我剛剛通過使用json_decode():)發現了它,但無論如何,您的答案是好的並糾正。對於像這樣的問題的其他人也是這樣:在字符串上使用json_decode()會顯示所有隱藏的字符 – Asara