PHP ile bir textarea değerini almak

2 Cevap php

Herkes belki PHP ile bir HTML belgesindeki belirli bir öğenin değerini almak nasıl bilemez? Ya şimdi yapıyorum file_get_contents başka bir web sitesinden HTML kodunu yukarı çekin ve bu web sitesinde bir textarea var için kullanıyor:

<textarea id="body" name="body" rows="12" cols="75" tabindex="1">Hello World!</textarea>

Ne yapmak istiyorum benim komut sadece file_get_contents ve çekin yapmak zorunda olduğunu "Merhaba Dünya!" textarea. Bu mümkün mü? Beyler adamcağız için üzgünüm, yine, bu tür yararlı tavsiyelerde:].

2 Cevap

Bizi adamcağız üzgün olmayın, bu ben cevaplamak için mutluyum iyi bir soru. Sen PHP Simple HTML DOM Parser neye ihtiyacınız almak için kullanabilirsiniz:

$html     = file_get_html('http://www.domain.com/');
$textarea = $html->find('textarea[id=body]'); 
$contents = $textarea->innertext;

echo $contents; // Outputs 'Hello World!'

Eğer kullanmak istiyorsanız file_get_contents(), bunu şöyle yapabilirsiniz:

$raw_html = file_get_contents('http://www.domain.com/');
$html     = str_get_html($raw_html);
...

Eğer bir yere ihtiyacınız varsa orjinal, tam HTML çıkmak için outertext yöntemini kullanabilirsiniz gibi file_get_contents() için herhangi bir ihtiyaç görmüyorum rağmen:

$html     = file_get_html('http://www.domain.com/');
$raw_html = $html->outertext;

Sadece tekmeler için, bir one-liner düzenli ifade ile de yapabilirsiniz:

preg_match('~<textarea id="body".*?>(.*?)</textarea>~', file_get_contents('http://www.domain.com/'), $matches);
echo $matches[1][0]; // Outputs 'Hello World!'

Bu düzenli ifadeyi bozabilecek değişiklikleri kodu çok daha savunmasız olarak ben şiddetle bu olsa karşı tavsiye ediyorum.

Ben phps DOM & DOMXPath sınıfları kullanarak öneririm.

$dom = DOMDocument::loadHTMLFile( $url );
$xpath = new DOMXPath( $dom );
$nodes = $xpath->query('//textarea[id=body]' )

$result = array();
for( $nodes as $node ) {
    $result[] = $node->textContent;
}

Orada $result id vücudun her textarea değerini içerecektir.