2014-01-22 5 views
2

У меня есть строка HTML внутри переменной PHP. Строка содержит несколько полей ввода. Как я могу получить значение поля ввода по его идентификатору?Получить текстовое значение ввода из строки php

$text = '<html><head></head><body><form action="" method="post"><label>Test</label><input type="text" name="test1" id="test1" value="Value Test" /><label>Test 2</label><input type="text" name="test2" id="test2" value="Value Test2" /></form></body></html>'; 
+0

Вы хотите атрибут значения конкретного ввода в то время как он находится в этой строке? Какой конкретный вход? – Charles

+0

Я не представляю форму, я получил его в переменной php и забирал некоторые вещи, например, думал, что имеет скрытое поле с кодом для работы формы, и мне нужно получить этот код, который пришел с сайта, который уже имеет эту форму, чтобы разместить его на моей странице, например: «" –

+0

Мне нужны коды, которые находятся внутри «скрытого ввода» «так что я могу загрузить форму, которая готова, я поднял в iframe, чтобы добавить другую форму, стилизованную по-моему, но мне нужно сделать это с помощью чистого PHP без использования какого-либо плагина, установленного на моем сайте –

ответ

2

Из того, что я могу сказать, у вас есть строка HTML, и вы хотите, чтобы разобрать его как HTML, а затем найти элемент по его идентификатору.

Если вы не хотите изучать несколько изначально запутанный синтаксис для XML manipulation или написать, вероятно, запутанное регулярное выражение, вы можете использовать инструмент, например phpQuery.

Пример может выглядеть следующим образом:

$html = phpQuery::newDocument($text); 
$result = pq($html)->find("#id"); 
1

$ _POST [ 'test1'] $ _POST [ 'test2']

Конечно, вы должны будете использовать эти внутри вашего кода PHP, в зависимости от того, что вы делаете. Мой пример отправит результаты на вашу страницу действий.

<?php echo("Your name is ".$_POST['test1']."<BR>Your Age is ".$_POST['test2']); ?> 
+0

, он не решает , Я не представляю форму, я заставил его нуждаться в переменной php и забрать некоторые вещи, например, подумал, что имеет скрытое поле с кодом для работы с формой, и мне нужно получить этот код, который появился с сайта, который уже имеет эту форму, чтобы разместить его на моей странице, например: " –

+0

Извините, мой adhd заставляет меня быстро перебирать вещи, и я часто пропускаю их. Просто присвойте свое скрытое значение переменной IE varHidden = $ _POST ['formID']; Это позволит вам выбрать переменную для какой-либо части кода, который вы хотите. – achap1989

1

Хотя регулярные выражения не являются предпочтительным способом для разбора HTML, это мое решение:

<?php 
$text = '<html><head></head><body><form action="" method="post"><label>Test</label><input type="text" name="test1" id="test1" value="Value Test" /><label>Test 2</label><input type="text" name="test2" id="test2" value="Value Test2" /></form></body></html>'; 

$id = 'test1'; 
preg_match_all("/<input type=\"text\"(.*)id=\"$id\" value=\"(.*?)\"(.*)>/",$text,$matches); 

$value = ''; 
if(isset($matches[2][0])){ 
    $value = $matches[2][0]; 
} 

echo 'Value: '.$value; 
2

Одним из возможных вариантов является использование PHP Simple HTML DOM.

Вот пример для нахождения входного элемента по ID и печать его значение:

<?php 

$text = '<html><head></head><body><form action="" method="post"><label>Test</label><input type="text" name="test1" id="test1" value="Value Test" /><label>Test 2</label><input type="text" name="test2" id="test2" value="Value Test2" /></form></body></html>'; 

// Create DOM from URL or file 
$html = str_get_html($text); 

foreach($html->find('input') as $element) { 
    if($element->id == "test1") { 
     echo "Element: #".$element->id." has value: ".$element->value; 
    } 
} 

?> 
+0

phpQuery красивее;) – Charlie

Смежные вопросы