簡體   English   中英

PHP從字符串中提取包含特殊字符的單詞

[英]PHP extract word that contains special character from a string

我有一個字符串:

$str = " Côte-d'azure ! (3000) limousin - limousine  ";

我需要提取一些單詞並將其放入數組中。 最終得到:

array (
        0 => "Côte-d'azure",
        1 => "limousin",
        2 => "limousine"
     );

所以我嘗試了:

preg_match_all("/[a-zA-Z]+/", $str, $all);

但這忽略了特殊字符ô'-

請任何建議?

使用Unicode模式u字符屬性

preg_match_all('/\p{L}[\p{L}\\\\\'-]+/u', mysql_real_escape_string($str), $all);

這需要一個(Unicode)字母,然后匹配盡可能多的其他Unicode字母,反斜杠,連字符和撇號。 如果希望其他標點符號不分隔單詞,請將其包括在字符類中。

請注意5個反斜杠。 編譯字符串時,將刪除三個反斜杠,因為其中兩個反斜杠轉義了后面的反斜杠,而最后一個反斜杠轉義了' 因此,正則表達式引擎僅接收2個反斜杠。 這些由正則表達式引擎解釋為一個文字反斜杠。 不幸的是,在使用PHP時,無法使用少於4個反斜杠來表示一個文字反斜杠。

嘗試

if (preg_match('/[^a-zA-Z0-9]+/', $your_string, $matches))
{
  echo '  symbol encountered !!';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM