Изчистване на тагове

sle

Registered
Как от една страница да се вземат само необходимите тагове?

с strip_tags правя да излизат само <a> и <img>,но пак има линкове които не ми трябват и текстове които се появяват без да са нито едно от 2те? С какво се доизчиства?
 
Вероятно не си разбрал как точно работи функцията strip_tags. Идеята е, че тя премахва HTML таговете от даден текст, а чрез втория параметър можеш да определиш кои тагове да не бъдат премахвани. С дру,ги думи, тази функция ще ти върне целия текст, без HTML таговете, или целия текст плюс HTML таговете които си разрешил.

Ако ти искаш да вземеш само A и IMG таговете, това е нещо съвсем различно и тази функция няма да ти свърши работа. Единия вариант е да използваш регулярни изрази. Другия вариант, ако успееш да докараш този HTML до валиден XHTML/XML да използваш Xpath.
 
Ок ,а би ли могъл да ми дадеш малко инфо за тези регуарни изрази?
Как горе долу трябва да стане номера с preg_match ли ?

exec каза:
Вероятно не си разбрал как точно работи функцията strip_tags. Идеята е, че тя премахва HTML таговете от даден текст, а чрез втория параметър можеш да определиш кои тагове да не бъдат премахвани. С дру,ги думи, тази функция ще ти върне целия текст, без HTML таговете, или целия текст плюс HTML таговете които си разрешил.

Ако ти искаш да вземеш само A и IMG таговете, това е нещо съвсем различно и тази функция няма да ти свърши работа. Единия вариант е да използваш регулярни изрази. Другия вариант, ако успееш да докараш този HTML до валиден XHTML/XML да използваш Xpath.
 
1. Вариант с регулярен израз. Явно моя пример не използва най-добрия шаблон, защото има парзни стойности в резултатите, но пък работи и връща необходимите данни.

PHP:
preg_match_all('/(href="(.*?)")|(src="(.*?)")/msi', file_get_contents('source.html'), $result);

//$result[2] съдържа URL линковете
//$result[4] съдържа URL на картинките

2. Вариант за Xpath (това е само за линковете, за картинките по подобен начин)
PHP:
$xml = new SimpleXMLElement(file_get_contents("source.html"));

$result = $xml->xpath("//a");

foreach($result as $a){
	echo $a['href']."<br />";
}
 

Back
Горе