2016-03-29 8 views
1

私は助けが必要です。Postgress regexpよりPHP言語で一致するものを置換してください

私は次のように、PostgreSQLのREGEXP_REPLACEパターンを持っている:

regexp_replace(lower(institution_title),'[[:cntrl:]]|[[[:digit:]]|[[:punct:]]|[[:blank:]]|[[:space:]|„|“|“|”"]','','g') 

と半分ははpostgress DBからである、と私はPHPのaswellから文字列を比較する必要があるので、私はPHP言語

にこの一つの代替を必要とします。

+0

PHPで同じ正規表現を使用することができます。 'preg_replace( '/ [[:cntrl:] [:digit:] [:punct:] [:blank:] [:space: ]「」「」 "] +/U」、 ''、strtolower(institution_title))' –

答えて

1

あなたはPHPのPCRE正規表現と同じPOSIX文字クラスを使用することがあります。

preg_replace('/[[:cntrl:][:digit:][:punct:][:blank:][:space:]„““”"]+/', '', strtolower($institution_title)) 

は他にdemo

を参照してください、PCREでUnicode category classesがあります。このように、あなたも\p{Cc}制御文字のためのスタンド、数字のため\d、句読点のため\p{P}、および空白のため\s

preg_replace('/[\p{Cc}\d\p{P}\s„““”"]+/u', '', mb_strtolower($institution_title, 'UTF-8')) 

をしようとします。

私は/u修飾子を使ってUnicode文字列も処理しています。

regex demo

+0

私は、文字列と一致しないことができ、 ここではPostgresのSQLの私の出力です: SQL: '選択REGEXP_REPLACE(下の(タイトル)、 | [[:スペース]:] | "|:|" | ""] [[:スペース:]] 」、 ''、 'G') cls_institutions'からSQL: ' "oxforduniversity" "šiauliųuniversitetas" "harwarduniversity" "žemaitijoskolegija"' PHP: '$ institution [] =" '".preg_replace('/[[:cntrl:] [:digit:] [:punct:] [:空白:] [:スペース:]" "" ""] +/'、' '、strtolower($ data [0]))。"' "; ' PHP: '" oxforduniversity"、 "Šiauliųuniversitetas"、 "harwarduniversity"、 "Žemaitijoskolegijaは"、 ' 最初の文字は、ケースを低下させない、何とか...私は何かが足りないのですか? – Gumuliokas

+0

私の答えで書いたように、Unicodeでは、 '/ u' regex修飾子と' mb_strtolower() 'を使ってUnicode文字を小文字にする必要があります。 –

0

ハンクスの連中を参照してください、私は別の問題にぶつかったspecifikシンボルがある場合、私は文字列と一致しないことができ、ここで

はPostgresのSQLの私の出力です:

SQL:

select regexp_replace(lower(title),'[[:cntrl:]]|[[[:digit:]]|[[:punct:]]|[[:blank:]]|[[:space:]|„|“|“|”"]','','g') 
from cls_institutions 

出力:

"oxforduniversity" 
"šiauliųuniversitetas" 
"harwarduniversity" 
"internationalbusinessschool" 
"vilniuscollege" 
"žemaitijoskolegija" 
"worldhealthorganization" 

しかし、PHPでの出力は少し異なっている:私は機関と私の配列を得た:

$institutions[] = "'".preg_replace('/[[:cntrl:][:digit:][:punct:][:blank:][:space:]„““”"]+/', '', strtolower($data[0]))."'"; 

そして、このようなPHPの出力:

"oxforduniversity", 
"Šiauliųuniversitetas", 
"harwarduniversity", 
"internationalbusinessschool", 
"vilniuscollege", 
"Žemaitijoskolegija", 
"worldhealthorganization" 

最初の文字が何らかの形で、ケースを低下させません...私は何かが欠けている?