|
|
|
| Доброго времени суток.
Вот такая проблема:
Написал код для проверки:
<?php
$text = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
</body>
</html>';
preg_match("|<title>(.*?)<\/title>|", $text, $result);
print_r($result);
|
В результате получаеться вот это:
Array
(
[0] => <title>Untitled Document</title>
[1] => Untitled Document
)
|
Первый элемент массива явно лишний. Как переделать регулярное выражение так чтобы в результаты заносилось только то что между тегами(т.е. из результатов нужно убрать первый элемент массива) | |
|
|
|
|
|
|
|
для: tvv123456
(21.07.2010 в 14:09)
| | Дак ведь так и должно быть, насколько я помню. То есть первый элемент - это часть строки, в которой вхождение найдено, а второй элемент - само вхождение | |
|
|
|
|
|
|
|
для: tvv123456
(21.07.2010 в 14:09)
| | Нельзя..
Делай так сразу после регулярки: $array['0'] = $array['1']; (так, позабавиться) | |
|
|
|
|
|
|
|
для: tvv123456
(21.07.2010 в 14:09)
| | вам оно мешает?
почитайте лучше мануал по функции preg_match.
а если так уж не нравится элемент - удалите его unset($result[0]);
:) | |
|
|
|
|
|
|
|
для: psychomc
(21.07.2010 в 23:38)
| | Ну я знаю почему получаеться 2 записи. Если честно, немного раздражает что не могу получить то что именно нужно :)))). Думал кто-нить подскажет альтернативный вариант.
Ну, а делать из-за этого дополнительные шаги типа unset($result[0]); не очень тоже нравиться :) | |
|
|
|
|
|
|
|
для: tvv123456
(22.07.2010 в 20:06)
| | Придется привыкнуть, таков php | |
|
|
|
|
|
|
|
для: Tonik992
(23.07.2010 в 01:07)
| | Выглядит как камень в сторону php.
Неуместное выражение в данном случаи. | |
|
|
|
|
|
|
|
для: tvv123456
(22.07.2010 в 20:06)
| | а unset и не надо делать, вам этот элемент массива никак не мешает.
просто функция сама по себе чуть более универсальная, чем вам в данном случае надо. вот и всё | |
|
|
|
|
|
|
|
для: tvv123456
(21.07.2010 в 14:09)
| | > Как переделать регулярное выражение так чтобы в результаты заносилось только то что между тегами(т.е. из результатов нужно убрать первый элемент массива)
// <?php
preg_match("|(?<=<title>).*?(?=</title>)|", $text, $result);
|
| |
|
|
|
|
|
|
|
для: sms-send
(23.07.2010 в 10:31)
| | Спасибо! Работает, только я нашел уже другое решение :)
И у этого выражения время выполнения в разы больше чем у исходного, что меня лично напрягает больше, чем ненужный мусор в массиве :))))))) | |
|
|
|
|
|
|
|
для: tvv123456
(23.07.2010 в 14:35)
| | Ну как же так, задача в теме ставилась именно переделать (жирно) регулярное выражение с целью получить массив в желанном виде:))
А вообще читайте док по функции preg_match:
...$matches[0] will contain the text that matched the full pattern...
Чего там в массиве может не нравиться не совсем ясно. | |
|
|
|