给出以下 html 代码:
<div class="body">
1. Question <strong>1</strong>
<input type="text" />
2. You have <u>Question</u><strong>1</strong>
<input type="text" />
3. Question <strong>3</strong>
<input type="text" />
</div>
我想要得到这样的文字:
[
0 => 'Question 1', // Or 'Question <strong>1</strong>' is better
1 => 'You have Question 2',
2 => 'Question 3'
]
这是我的代码:
$results = [];
$questions = $crawler->filterXPath('//*[contains(@class, "body")]/text()[normalize-space()][following-sibling::input]');
$questions = $questions->each(function($c) use (&$results) {
$line = trim($c->text());
if(preg_match('/^[0-9]{1,2}\./', $line, $matches) == true) {
$number = $matches[0];
if(is_numeric($number) && $number != '') {
$results[] = trim(str_replace($number, '', $line));
}
} elseif(!empty($results)) {
$results[count($results) - 1] .= '\n'. $line;
}
});
return $results;
无需
<strong>
和 <u>
标签即可正常工作。你到底该怎么做?
您可以使用 strip_tags($text) 从字符串中删除 html
在这里阅读相关内容http://www.w3schools.com/php/func_string_strip_tags.asp
如果你想删除起始数字,你可以使用explode() (http://php.net/manual/en/function.explode.php)就像
explode(' ', $line, 2)
注意末尾的“2”,这将生成 2 个元素的数组,第一个元素是数字 + 点,第二个元素是文本。