2013-06-26 62 views
2

之間的符號我有它包含了英語和非英語字符的字符串,並且都包含它們之間的underscore symbol _正則表達式:如何替換非英語字符串,但不是英語一個

我想刪除只從非英語字符串下劃線,離開強調,只有英文字符之間。

例子:Hello_this是我,مرحبا_اناهنا

謝謝!

+1

你嘗試過什麼?如何強調在他們旁邊的字符串有空格或結尾?或數字?或者它旁邊總是會有兩個ASCII或兩個非ASCII字符? –

回答

0

這可能的preg_replace工作:

preg_replace('/(?<=[^\x00-\x80])_(?=[^\x00-\x80])/', '', $str); 
+0

沒有工作。任何方式你可以解決這個問題?/[_ \ W] * /我試圖刪除英文字母和下劃線之間的所有字母。 '前:Hello_this是我',مرحبا_اناهنا'會導致:hello_this是我' – Sobiaholic

+0

它的工作。看到這個演示:http://ideone.com/LC8wGy – anubhava

+0

謝謝,我想我錯了!你怎樣才能刪除所有的非英文字母及其下劃線? – Sobiaholic

0

你可以試試這個:

<meta charset="UTF-8"/> 
<pre><?php 

$subject = "Hello_this is me , مرحبا_اناهنا"; 

$pattern = '~\p{Arabic}\K_(?=\p{Arabic})~u'; 

echo $subject . '<br/>' . preg_replace($pattern, ' ', $subject); 

請注意,我使用u修飾符來處理unicode字符串。

\K之前重置了比賽,但你可以通過回顧後作爲代替anubhava這一招和CTN表明它。

+0

會盡快,我回去試試。謝謝 – Sobiaholic