Maison > Questions et réponses > le corps du texte
Je suis un débutant. J'essaie de trouver le nom complet dans l'une des lignes ci-dessous et il n'y a pas de Obituary for
<h2>Obituary for John Doe</h2> <h1>James Michael Lee</h1>
Mon expression régulière est comme ça.
(<h1>(.+?)<\/h1>|<h2>Obituary\sfor\s(.+?)<\/h2>)
J'ai toujours la nécrologie de John Doe
. Comment supprimer la nécrologie 讣告。如何删除
的
de ?
P粉7757887232024-04-02 10:10:01
Pouvez-vous faire quelque chose comme ça sans utiliser d'expressions régulières ?
/** * @description : Function extracts names from html header tags * @example : "Obituary for John Doe
James Michael Lee
" -> ["John Doe", "James Michael Lee"] * @param $html string * @return []string : list of full names */ function extractFullNames($html) { $regex = '/(.*?)<\/h[1-2]>/'; preg_match_all($regex, $html, $matches); $names = $matches[1]; $names = array_map('trim', $names); $names = array_map('strip_tags', $names); $names = array_map('strtolower', $names); $names = array_map('ucwords', $names); $names = array_map('removeObituary', $names); return $names; } /** * @description : Function used to remove "Obituary For" if present * @example : "Obituary For John Doe" -> "John Doe" * @param $name string * @return string : name without "Obituary For" */ function removeObituary($name) { $name = str_replace("Obituary For ", "", $name); return $name; } // Test cases $html = ' Obituary for John Doe
James Michael Lee
'; $names = extractFullNames($html); $expected = ['John Doe', 'James Michael Lee']; echo "Expected: " . implode(', ', $expected) . "\n"; echo "Actual: " . implode(', ', $names);
P粉3948122772024-04-02 09:09:58
Tous les chemins mènent à Rome, vous pourriez faire ceci :
|2>Obituary\sfor\s)\K[^><]+
Veuillez consulter cette démo sur regex101. Les matchs auront lieu en $out[0]
.
K
Réinitialisation En commençant par le rapport de jeu. Consultez la FAQ sur les expressions régulières SO pour plus d’informations.