2010-09-09 2 views
0

мне было интересно, как я мог разделить эту строкуRegex разделить на массив частей

{{MENU}}<li><a href="{{LINK}}" title="{{TITLE}}"><span>{{TITLE}}</span></a></li>{{/MENU}} 

В массиве:

array(
    "<li><a href=\"", 
    "{{LINK}}", 
    "\" title=\"", 
    "{{TITLE}}", 
    "\"><span>", 
    "{{TITLE}}", 
    "</span></a></li>" 
) 

Это также должен работать с более различными форматами, такими как:

{{MENU}}<a href="{{LINK}}" title="{{TITLE}}">{{TITLE}}</a>{{/MENU}} 
{{MENU}}<b><a href="{{LINK}}" title="{{TITLE}}">{{TITLE}}</a></b>{{/MENU}} 

Моя проблема в том, что я еще не знаю, как написать это сложное регулярное выражение.

+4

И мне интересно, почему вы не используете DOM Parser, чтобы получить эти значения указанных – Gordon

+1

Как Гордон, хотя DOM Parser может звук немного подавляющий ... это действительно то, что вам нужно использовать, поскольку любой вид рег-ex будет большой работой, и производительность будет страдать. – Petrogad

+0

@Frederico на самом деле, Regex будет работать быстрее, и я уверен, что кто-то придумает один для этого конкретного случая. Просто DOM Parser более надежный, более общий и не нуждается в обучении смутно понимать HTML в первую очередь. – Gordon

ответ

4

Вы можете попробовать с preg_split()


$yourArray = preg_split("/({{\w+}})/", $yourText, -1, PREG_SPLIT_DELIM_CAPTURE); 

The code


Ресурсы:

На эту же тему:

+0

Вам нужно поместить шаблон в круглые скобки. – Gumbo

+0

@Gumbo спасибо :) –

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