2017-11-14 9 views
3

よろしくですので、アップロードされたSDSファイルからCAS番号を抽出しています(pdfに移動する前にdocxで作業中)。私は正常にページ内の文字列にdocxを変換したが、それらが存在する場合、私はいくつかの文字列を抽出する必要があります。ここで私が使用しているコードはありますが、私はpreg_match_allを正しく使用しているとは思いません。PHPのCAS番号のパターンに一致するすべての文字列値を抽出しています

$docObj = new DocxConversion($_FILES["sdsFile"]["tmp_name"]); 
$docText = $docObj->convertToText(); 
preg_match_all("/[0-9]{2,7}-[0-9]{2}-[0-9]{1}/", $docText, $matches); 
print_r($matches); 

これは私にArray ([0] => Array ())を与える。非常に有用ではない私が探しているとき:

  • 64742-47-8
  • 64742-65-0
  • 9003-29-6

$docTextの出力は次のようになります。

商品IDラベルに記載された製品ID:製品番号商品番号ラベル説明実物のブランドSM5802EE ECHO POWERBLEND X EXTEN DED LIFE OIL ECHO SMGR33EC 6450005 ECHOのPOWERブレンドX ECHO SMGR01EC 6450025 ECHOのPOWERブレンドX ECHO SMGR07EC 6450002 ECHOのPOWERブレンドX ECHO SM5101EC X6972270101/99988800086 ECHOのPOWERブレンドX ECHO SM5905EC 6450250 ECHO BAR & CHAIN OIL ECHO SM5818ER 6450114 ECHO POWERブレンドX HIGH PERFORMANCE 2ストロークエンジンECHO SM5818EG 6450103 ECHO電力BLEND X ECHO SM5238EC 99988800088 ECHO電力BLEND X ECHO SM5218EC X6972270201/99988800085 ECHO電力BLEND X ECHO SMGR25EC X6974100202 ECHO電力BLEND X ECHO SMGR02EC 6450001 ECHO電力BLEND X ECHO SMGR29EC645万ECHO POWERBLEND X ECHO SM5818EE 6450102 ECHO POWER BLEND X LOW SMOKE ECHO SM5818EC 6450100/6450099エコーパワーブレンドXエコーSM5818EM 6450060エコーパワーブレンドXエコーSMGR34EEエコーパワーブレンドXエコーSM5906EC 6450050エコーパワーブレンドXエコーSM5906EM 6450062エコーパワーブレンドXエコーSM5943EE 6450116エコーパワーブレンドXエコーSMGR33EK 6450118エコーパワーブレンドXエコーSMGR34ER 6450109エコーパワーブレンドXエコーSM5926EC 6450006 ECHO POWERBLEND X XTENDED LIFEオイルECHO SMGR34EE ECHO POWER BLEND X ECHO SMGR34EC 6450108 ECHO POWER BLEND X ECHO SMGR12EC 99988800089 ECHO POWER BLEND X ECHO SMGR34EK 6450119 ECHO POWERBLEND X ECHO SM5834EM 6450061 ECHO POWER BLEND X ECHO完成品商品番号カスタマー商品番号ラベル説明ACTUAL BRAND SMGR34EG 6450115 ECHO POWER BLEND X ECHO SM5955EC 6452750 ECHO POWER BLEND Xエコーは、使用時の化学物質および使用権の使用を推奨しています。石油潤滑油その他の化学製品、輸入者、またはその他の責任当事者の名前、住所、電話番号を推奨するものはありません。 Spectrum Lubricants Corporation 500 Industrial Park Drive Selmer、TN 38375-3276アメリカ合衆国製品情報MSDSリクエスト:(800)264-6457または+17316454972技術情報:(800)264-6457または+17316454972一般情報:vswedley @ spectrumcorporation。市外電話番号:1.4.1。緊急時の対応北米:CHEMTREC(800)424-9300午後5時以降、CSTまたは+17035273887健康緊急時の米国:(800)264-6457または+17316454972危険性の識別化学物質の区分(d)に従う化学物質の分類§1910.1200:急性吸入区分4眼刺激性区分2皮膚腐食性/刺激性区分2可燃性液体区分4信号語:警告シンボル:危険有害性情報:吸入した場合有害性重大な眼刺激を引き起こす皮膚刺激を引き起こす可燃性液体注意書き:予防:またはスプレー。屋外または換気の良い場所でのみ使用してください。目や顔の保護具を着用する保護手袋を着用する熱、高温の表面、火花、炎、その他の発火源から遠ざけること。喫煙禁止。応急措置:吸入した場合:人を新鮮な空気の場所に移し、呼吸しやすい姿勢で休息させること。目に入った場合:数分間水で慎重に洗い​​流す。コンタクトレンズを外してください(存在する場合)。すすぎを続ける。目の刺激が持続する場合は医師の診断/手当てを受けること。皮膚に付着した場合:多量の水で洗い、刺激または発疹が生じた場合は医師の診断/手当てを受けること。汚染された衣類を脱ぎ、再使用する前に洗ってください。気分が悪い場合は、毒センター/医者に連絡してください。火災の場合:水霧、泡、乾燥した化学薬品または二酸化炭素(CO2)を使用して火災を消火する。保管:換気の良い場所に保管してください。廃棄:地域/地域/国/国際規制に従って内容物/容器を処分する。成分の組成/情報§1910.12003.1.1のパラグラフ(d)に従って健康障害として分類されるすべての成分の化学名および濃度(正確な割合)または濃度範囲。成分CAS番号EU番号濃度(%)危険有害性情報(セクション16参照)留出物(石油)、水素化処理光64742-47-8 265-149-8 10-30 H226、H304、H315、溶剤脱ロウ重質パラフィン留出物64742-65-0 265-169-7 40-50 H315、H332 Polyiosbutylene 9003-29-6使用不可40-70 H315、H319、H332 FIRST AIDは

措置私はそこよりだが、

+0

簡略化していただきありがとうございますが、サンプルテキストに太字で表示されている3つがどのように欠落しているかわかりません。 – CWentzloff

+0

あなたはここにいくつかの特別な種類のhypensを持っています。下の私の答えを見てください。 – Jan

答えて

5

他のハイフンを追加する必要があります。

\d{2,7}\p{Pd}\d{2}\p{Pd}\d 

a demo on regex101.comを参照してください。


ダウンブロークン:

\d{2,7} # digits, 2-7 times 
\p{Pd} # matches any kind of hyphen or dash 
\d{2} # 2 digits 
\p{Pd} # same as above 
\d  # one digit 


PHPで:

preg_match_all('~\d{2,7}\p{Pd}\d{2}\p{Pd}\d~', $docText, $matches); 

それとも(コメントを参照)

preg_match_all('~\d{2,7}\p{Pd}+\d{2}\p{Pd}+\d~', $docText, $matches); 

注意を占める後者で+記号最終的に複数のダッシュ/ハイフン。

+0

そのため、行はpreg_match_all( "/ \ d {2,7} \ p {Pd} \ d {2} \ p {Pd} \ d /"、$ docText、$ matches); – CWentzloff

+0

@CWentzloff:答えにコードを追加しました。 – Jan

+0

故障のおかげで、それは非常に検索ルールを見つけるのに役立ちます。あなたのデモのコードをそのまま使用しましたが、それでも配列(0){}以上は私に与えません。私は、私の顔の中で私を打つことを試みている私のコードの中で最も明白なものが欠けていると私は誓っています。 – CWentzloff

関連する問題