Я пытаюсь найти способ получить содержимое этого атрибута HTML «name», используя PHP getStr, я все равно не могу заставить его работать, я уже искал, но не смог найти что-то, что может помочь мне.
<input id="9d6e793e-eed2-4095-860a-41ca7f89396b.subject" maxlength="50" name="9d6e793e-eed2-4095-860a-41ca7f89396b:subject" value="" tabindex="1" class="subject required field" type="text"/>
Я хочу получить это значение в строку:
9d6e793e-eed2-4095-860a-41ca7f89396b: субъект
Я могу получить значение тега, как этот:
<input type="hidden" name="message" value="1442814179635.Oz1LxjnxVCMMJ0QpV0wGLx4roEA="/>
С этим кодом:
getStr($b,'name="message" value="','"');
Но я не могу найти способ получить имя атрибута первого?
Этот фрагмент кода будет делать то, что вы хотите:
<?php
$b = '<input id="9d6e793e-eed2-4095-860a-41ca7f89396b.subject" maxlength="50" name="9d6e793e-eed2-4095-860a-41ca7f89396b:subject" value="" tabindex="1" class="subject required field" type="text"/>';
echo "\$b = $b\n";
$rest = substr(strstr($b,'name="'),6);
echo "\$rest = $rest\n";
$name = strstr($rest,'"',true);
echo "\$name = $name\n";
?>
Используйте регулярные выражения в PHP. Этот код должен быть полезным:
<?php
$str = '<input type="hidden" name="message" value="1442814179635.Oz1LxjnxVCMMJ0QpV0wGLx4roEA="/>';
//forward slashes are the start and end delimeters
//third parameter is the array we want to fill with matches
if (preg_match('/name="([^"]+)"/', $str, $m)) {
print $m[1];
} else {
//preg_match returns the number of matches found,
//so if here didn't match pattern
}
Выход:
message
Проверьте PHP DOMElement :: GetAttribute метод. Это все в руководстве
Ну вот:
<?php
$html = '<input id="9d6e793e-eed2-4095-860a-41ca7f89396b.subject" maxlength="50" name="9d6e793e-eed2-4095-860a-41ca7f89396b:subject" value="" tabindex="1" class="subject required field" type="text"/>';
$doc = new DOMDocument;
$doc->loadHTML($html);
$elements = $doc->getElementsByTagName("input");
foreach($elements as $element){
echo $element->getAttribute('name');
}
?>