Регулярка, немного запутался.

Spell
На сайте с 14.07.2006
Offline
72
760

Доброго времени суток,

прошу помощи в регулярке PHP, запутался уже.

Имеется строка с содержимым - "...текст<h1>Текст - который нужно получить </h1>текст...",

вынимаю текст с этой строки с помощью preg_match и маски "/(?<=(<h1>))[а-яА-Яa-zA-Z0-9\s-]*/". Результат: "Текст - который нужно получить ", все отлично.

Но с маской "/(?<=(<h1>))[а-яА-Яa-zA-Z0-9\s-]*(?<=(<\/h1>))/" ничего не вынимает, и не пойму где ошибка, ведь разница не велика, всего лишь убедиться что посл текста идет </h1>.

Что не так?

sashka_
На сайте с 27.01.2010
Offline
103
#1

для чего такие заморочки ?

так будет лучше <h1>(.*?)</h1>

Знаю PHP, JS, jQuery. Помощь для вашего сайта. (/ru/forum/840509).
Djaarf
На сайте с 16.12.2008
Offline
15
#2

Я бы сделал проще, если так и нужно получить все что находится в теге <h1> не вижу смысла сильно уточнять выражение много скорости не прибавит, попробуйте:

/\<h1\>(.*?)\<\/h1\>/si

UPD. Уже ответили.

Spell
На сайте с 14.07.2006
Offline
72
#3

В любом случае мне нужно будет отделить ТЕКСТ от ТЕГОВ, да и скорость роли не играет.

Просто не понимаю почему не срабатывает выражение.

Спс за советы.

sashka_
На сайте с 27.01.2010
Offline
103
#4
ТЕКСТ от ТЕГОВ

а то что выше приведено будет не отделено от тегов ?

посмотрите результат через print_r

S
На сайте с 28.10.2005
Offline
296
#5
Spell:

Но с маской "/(?<=(<h1>))[а-яА-Яa-zA-Z0-9\s-]*(?<=(<\/h1>))/" ничего не вынимает, и не пойму где ошибка, ведь разница не велика, всего лишь убедиться что посл текста идет </h1>.

Что не так?

Я тоже не понял вашу регулярку )


preg_match ( '/<h1>(.*)<\/h1>/Ui', $html, $found );

$h1_text = $found [1];

Spell
На сайте с 14.07.2006
Offline
72
#6

Спасибо, заработало.

// Я тоже не понял вашу регулярку )

Ну ... проверка на наличие тегов перед и после.

Нашел ошибку в своем, нужно так: "/(?<=<h1>)[а-яА-Яa-zA-Z0-9\s-]*(?=<\/h1>)/"

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

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