ホームページ >バックエンド開発 >PHPチュートリアル >preg_match に関する質問
$file="[{"name":"安徽省","code":"340000"},{"name":"北京市","code":"110000"},{"name":"福建省","コード":"350000"},{"名前":"甘?省","コード":"620000"},{"名前":"?? 省","コード":"440000 "},{"name":"西部自治州","code":"450000"},{"name":"県","code":"520000"},{"name" :"海南省" ,"コード":"460000"},{"名前":"河北省","コード":"130000"},{"名前":"河南省","コード":"410000 "},{"名前":"黒江省","コード":"230000"},{"名前":"湖北省","コード":"420000"},{"名前":"湖南省","コード":"430000"},{"名前":"吉林省","コード":"220000"},{"名前":"江?省","コード":"320000"} ,{"名前" :"江西省","コード":"360000"},{"名前":"??省","コード":"210000"},{"名前":"?モンゴル自治? ","コード" :"150000"},{"名前":"?夏匯自治区?","コード":"640000"},{"名前":"青海省","コード":"630000" },{"名前":"山西省","コード":"370000"},{"名前":"山西省","コード":"140000"},{"名前":"西省","コード":" 610000"},{"名前":"上海市","コード":"310000"},{"名前":"四川省","コード":"510000"},{ "名前":"天津市","code":"120000"},{"name":"チベットの自治?","code":"540000"},{"name":"新疆の自治?","code":" 650000"},{"名前":"?南省","コード":"530000"},{"名前":"浙江省","コード":"330000"}, {"名前":"崇? 都市","コード":"500000"}]"
preg_match("#{"名前":"(.*?)","コード":"350000" }#i",$file ,$rg1);
// print_r($rg1);exit();
$Province=$rg1[1];
なぜいつも希望する福建省の解決策が得られるのかわかりません。 。
" を " に置き換えて再試行してください
header("content-type:text/html;charset=utf-8");$file="[{\"name\":\"安徽省\",\"code\":\"340000\"},{\"name\":\"北京市\",\"code\":\"110000\"},{\"name\":\"福建省\",\"code\":\"350000\"},{\"name\":\"甘?省\",\"code\":\"620000\"},{\"name\":\"??省\",\"code\":\"440000\"},{\"name\":\"?西?族自治?\",\"code\":\"450000\"},{\"name\":\"?州省\",\"code\":\"520000\"},{\"name\":\"海南省\",\"code\":\"460000\"},{\"name\":\"河北省\",\"code\":\"130000\"},{\"name\":\"河南省\",\"code\":\"410000\"},{\"name\":\"黑?江省\",\"code\":\"230000\"},{\"name\":\"湖北省\",\"code\":\"420000\"},{\"name\":\"湖南省\",\"code\":\"430000\"},{\"name\":\"吉林省\",\"code\":\"220000\"},{\"name\":\"江?省\",\"code\":\"320000\"},{\"name\":\"江西省\",\"code\":\"360000\"},{\"name\":\"??省\",\"code\":\"210000\"},{\"name\":\"?蒙古自治?\",\"code\":\"150000\"},{\"name\":\"?夏回族自治?\",\"code\":\"640000\"},{\"name\":\"青海省\",\"code\":\"630000\"},{\"name\":\"山?省\",\"code\":\"370000\"},{\"name\":\"山西省\",\"code\":\"140000\"},{\"name\":\"?西省\",\"code\":\"610000\"},{\"name\":\"上海市\",\"code\":\"310000\"},{\"name\":\"四川省\",\"code\":\"510000\"},{\"name\":\"天津市\",\"code\":\"120000\"},{\"name\":\"西藏自治?\",\"code\":\"540000\"},{\"name\":\"新疆?吾?自治?\",\"code\":\"650000\"},{\"name\":\"?南省\",\"code\":\"530000\"},{\"name\":\"浙江省\",\"code\":\"330000\"},{\"name\":\"重?市\",\"code\":\"500000\"}]";preg_match("#{\"name\":\"([^\"]*)\",\"code\":\"350000\"}#i",$file,$rg1);$Province = $rg1[1];print_r($Province);
正規表現は一重引用符を使用するのが最善です。二重引用符をエスケープするのは面倒です
結果だけが必要な場合。 、json_decodeを使用できます 便利で速いです
一致する内容を書きすぎたので、ここで一致させることができます
{"name":"安徽省","code":"340000"},{"name": "北京市" ,"コード":"110000"},{"名前":"福建省","コード":"350000"}
上の赤い文字を見るとわかります。制限がある場合は、すべてが表示されます。上記の問題、最も簡単なのは、. の一致するコンテンツを制限することです。たとえば、それを [^}] (} 以外の文字) に変更すると、最初の 2 つの一致するコンテンツを除外できます
preg_match("#{\"name\":\"([^}]*?)\",\"code\":\"350000\"}#i",$file,$rg1);
preg_match('#{"name ":"([^:]+)","code":"350000"}#i',$file,$rg1);