2015-06-07 2 views
2

Я пытаюсь получить текст внутри двух вертикальных баров json string.Is разбор данных wikipedia и новых для json.The структура weird.Any help ?Как получить текст внутри двух вертикальных баров с помощью php regex

{{Infobox အတ္ထုပ္ပတ္တိ 
| အမည် =စိုးသူ 
| ဓာတ်ပုံ =Soe Thu.jpg 
| သက်တမ်း = 
| မွေးသက္ကရာဇ် = [[နိုဝင်ဘာ]] ၃၀ ရက် 
| အမည်ရင်း =စိုးသူလွင် 
| မိဘအမည် =ဦးခင်မောင်လွင်+ဒေါ်ခင်သူဇာ 
| မွေးဖွားရာဒေသ= 
| နိုင်ငံသား =[[Image:Flag of Myanmar.png|25px]] မြန်မာ 
| လူမျိုး =ဗမာ 
| ကိုးကွယ်သည့်ဘာသာ =ဗုဒ္ဓဘာသာ 
| ပညာအရည်အချင်း = M.B;B.S 
| အလုပ်အကိုင် = ဆရာဝန် ရုပ်ရှင်သရုပ်ဆောင်၊ အဆိုတော် 
| ကြင်ဖော် = ခင်မြမြဝတ်မှုန်ဆွေ 
| သားသမီး = 
| ထင်ပေါ်ကျော်ကြားမှု =အကယ်ဒမီရ မင်းသား 
| ထင်ရှားသည့်လက်ရာများ= 
| ရရှိခဲ့သည့်ဘွဲ့တံဆိပ်များ=မြန်မာ့ ရုပ်ရှင် ထူးချွန်ဆု 
| ကွယ်လွန်ရက် = 
| ကွယ်လွန်ရာဒေသ= 
| လက်မှတ်= 
| ကွန်ယက် =http://www.facebook.com/pages/Soe-Thu 
    }} 

Я пробовал это на php.

$result=explode("|",$str); 
    var_dump($result); 

Но я не думаю, что это правильный путь.

+0

здесь .. взрыва, вероятно, является лучшим решением, чем регулярное выражение .. –

+0

Это, конечно, не действует в формате JSON. – cars10m

+0

nope.I думаю, что regex имеют больше контроля. –

ответ

1

вы можете использовать это регулярное выражение

(?<=\|)[^|]+(?=\|) 

проверки демо Here

Я заметил, что у вас есть этот текст [[Image:Flag of Myanmar.png|25px]]

так что вы можете использовать это регулярное выражение также, потому что | в Myanmar.png|25px может привести к проблемы в вашем случае

(?<=\|).+?(?=\|\W) 

проверить это демо Here

+0

Если вы хотите первый бит, сразу после '{{' тоже вы можете изменить регулярное выражение на '(? <= [\ |] | \ {\ {) ([^ |] +) (= \ || \} \}?) '. Я также добавил группировки '()' вокруг найденных фрагментов. – cars10m

+1

, и вы можете сделать это так же '[^ {|] + (? = \ |)' –

+0

Great.Also, я хотел бы знать, как получить текст внутри brackets.Eg двойная квадратная скобка [[текст]] ,фигурные скобки {}. –

 Смежные вопросы

  • Нет связанных вопросов^_^