PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Mittels preg_match nach name und ähnlichen name suchen und als array ausgeben



Uranjitsu
17.09.2018, 15:39
Hallo zusammen,

wie kann einen Text bzh. HTML-File nach einem Name durchsuchen und auch ähnliche namen, sodass diese ausgegeben werden.

Ich möchte z.B das man nach "Naruto" suchen kann. Allerdings sind mehrere Varianten vorhanden:

<li><a href="#Naruto" title="Naruto">Naruto</a></li>
<li><a href="#Naruto-Shippuden" title="Naruto Shippuden">Naruto Shippuden</a></li>
<li><a href="#Boruto-Naruto-Next-Generations" title="Boruto: Naruto Next Generations">Boruto: Naruto Next Generations</a></li>

Demnach sollte "Naruto", "Naruto Shippuden" und "Boruto: Naruto Next Generations" ausgegeben werden. Im besten Fall als Array.

Hat da jemand eine Idee wie man das realisieren kann?

LG

masterholdy
17.09.2018, 18:42
<?php
$re = '/<li><a(.*?)>(.*)[N|n]aruto(.*)<\/a><\/li>/';
$str = '<li><a href="testa" title="testa">testa</a></li>
<li><a href="#Naruto" title="Naruto">Naruto</a></li>
<li><a href="#Naruto-Shippuden" title="Naruto Shippuden">Naruto Shippuden</a></li>
<li><a href="#Boruto-Naruto-Next-Generations" title="Boruto: Naruto Next Generations">Boruto: Naruto Next Generations</a></li>
<li><a href="testb" title="testb">testb</a></li>';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);


foreach($matches as $match){
echo($match[2] . "Naruto". $match[3] . "</br>");
}

?>




Naruto
Naruto Shippuden
Boruto: Naruto Next Generations

EDIT:// gewünscht war ja ein array habe das überlesen :D


<?php
function foo($str){
$re = '/<li><a(.*?)>(.*)[N|n]aruto(.*)<\/a><\/li>/';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

return array_map(function ($match){
return $match[2] . "Naruto" . $match[3];
}, $matches);
}

$str = '<li><a href="testa" title="testa">testa</a></li>
<li><a href="#Naruto" title="Naruto">Naruto</a></li>
<li><a href="#Naruto-Shippuden" title="Naruto Shippuden">Naruto Shippuden</a></li>
<li><a href="#Boruto-Naruto-Next-Generations" title="Boruto: Naruto Next Generations">Boruto: Naruto Next Generations</a></li>
<li><a href="testb" title="testb">testb</a></li>';

$resultArray = foo($str);
var_dump($resultArray);
?>


array(3) { [0]=> string(6) "Naruto" [1]=> string(16) "Naruto Shippuden" [2]=> string(31) "Boruto: Naruto Next Generations" }

Uranjitsu
30.10.2018, 18:33
Vielen Dank!!!!!