2016-06-19 6 views
1

mit dem folgenden HTML-Code:Symfony Crawler Text erhalten mit folgenden Geschwister

<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> 

ich möchte den Text wie folgt aus:

[ 
    0 => 'Question 1', // Or 'Question <strong>1</strong>' is better 
    1 => 'You have Question 2', 
    2 => 'Question 3' 
] 

Dies ist mein Code:

$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; 

Es funktioniert ohne <strong> und <u> Tag. Wie würdest du es genau machen?

Antwort

0

Sie können strip_tags ($ text) verwenden html von den Saiten

Lese darüber hier http://www.w3schools.com/php/func_string_strip_tags.asp

entfernen Wenn Sie die Startnummer entfernen möchten, können Sie explodieren() (http://php.net/manual/en/function.explode.php) wie

explode(' ', $line, 2) 

Hinweis der „2“ am Ende, wird dies produzieren und Anordnung von 2 elemets, ersten davon wird die Anzahl der Punkt + sein, wird der zweiten Text sein.

+0

Sorry, aber hast du meine Frage sorgfältig gelesen? – trinvh

Verwandte Themen