Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Помогите плз, с регуляркой (PHP)
цитата
18/04/12 в 13:30
 alex.raven
Сам я в них не разбираюсь. Есть следующее:

HTML страница, скажем, в переменной $html.

Код:

<div id="content">
    <h2>{lang text="Заголовок"}</h2>
        <div id="subcontent">
            <h5>{lang text="Подзаголовок"}</h5>
            <p>{lang text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget arcu magna. Praesent ac neque eget urna pellentesque sodales non eget orci. Ut eget leo eu velit tempor tincidunt. Sed gravida iaculis purus vitae iaculis."}</p>
        </div>
</div>

<div id="footer">
    <p>{lang text="Copyright &copy; %d" year=2012}</p>
</div>


Нужно получить все тексты, которые в кавычках в {lang text="...."}. Не сами {lang text="..."}, а только тексты в кавычках. Всем 5+ icon_smile.gif
цитата
18/04/12 в 13:39
 dDan

preg_match('#text=\"([^\"]+)\"#', $html, $text);

Например так
цитата
18/04/12 в 14:22
 Swimmer24
preg_match_all, а не preg_match, чтобы все тексты получить, естественно получишь массив, 0 - вместе с кавычками, 1 - то, что тебе надо
цитата
18/04/12 в 14:27
 Swimmer24
<?

$html = '<div id="content">
     <h2>{lang text="Заголовок"}</h2>
         <div id="subcontent">
             <h5>{lang text="Подзаголовок"}</h5>
             <p>{lang text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget arcu magna. Praesent ac neque eget urna pellentesque sodales non eget orci. Ut eget leo eu velit tempor tincidunt. Sed gravida iaculis purus vitae iaculis."}</p>
         </div>
</div>

<div id="footer">
     <p>{lang text="Copyright &copy; %d" year=2012}</p>
</div>"';

preg_match_all('#text=\"([^\"]+)\"#', $html, $text);

print_r($text);

?>

на выходе:

Array
(
[0] => Array
(
[0] => text="Заголовок"
[1] => text="Подзаголовок"
[2] => text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget arcu magna. Praesent ac neque eget urna pellentesque sodales non eget orci. Ut eget leo eu velit tempor tincidunt. Sed gravida iaculis purus vitae iaculis."
[3] => text="Copyright &copy; %d"
)

[1] => Array
(
[0] => Заголовок
[1] => Подзаголовок
[2] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget arcu magna. Praesent ac neque eget urna pellentesque sodales non eget orci. Ut eget leo eu velit tempor tincidunt. Sed gravida iaculis purus vitae iaculis.
[3] => Copyright &copy; %d
)

)

$text[1][0] .... $text[1][3]
то, что тебе надо
цитата
18/04/12 в 15:58
 FXIX
ну а самый простой вариант конечно мой.

Цитата:

preg_match_all('~{lang text="(.*?)"~is', $text, $matches);
print_r($matches[1]);
цитата
19/04/12 в 01:02
 alex.raven
супер, большое спасибо всем за помощь icon_smile.gif


Эта страница в полной версии