In ein paar verschiedenen Formen habe ich über diesen "Filter" hier und WPSE gefragt. Ich gehe jetzt einen anderen Ansatz ein und möchte es solide und zuverlässig machen.Zuverlässige und effektive benutzerdefinierte Suche und ersetzen Funktion - Preg oder Str ersetzen
Meine Situation:
Wenn ich einen Beitrag in meinem Wordpress-CMS erstellen, möchte ich einen Filter laufen zu lassen, die nach bestimmten Begriffen durchsucht und ersetzt sie durch Links.
Ich habe die Begriffe, nach denen ich in zwei Arrays suchen möchte:
$glossary_terms
und$species_terms
.$species_terms
ist eine Liste von wissenschaftlichen Namen von Fischen, wieApistogramma panduro
.$glossary_terms
ist eine Liste der Aquaristik Glossar Begriffe wieabdomen
,caudal-fin
undGram's Method
.
Es gibt ein paar Nuancen erwähnenswert:
Geschwindigkeit ist nicht ein Problem, da ich diesen Filter im Hintergrund laufen statt, wenn ein Nutzer die Seite oder wenn ein Autor ein Artenprofil oder einen Beitrag einreicht/bearbeitet.
Einige der zu filternden Post-Inhalte können HTML mit diesen Begriffen wie
<img src="image.jpg" title="Apistogramma panduro male" />
enthalten. Offensichtlich sollten diese nicht ersetzt werden.Arten werden oft mit einem abgekürzten Genus bezeichnet, so dass Sie anstelle von
Apistogramma panduro
oftA. panduro
sehen. Das bedeutet, ich brauche suchen & alle Arten Begriffe als Abkürzung ersetzen -Apistogramma panduro
,A. panduro
,Satanoperca daemon
,S. daemon
usw.Wenn
caudal-fin
undcaudal
sowohl in den Glossarbegriffe vorhanden sind, solltencaudal-fin
zuerst ersetzt werden.
ich in Erwägung zog einfach ein preg_replace
Zugabe, die für die Begriffe gesucht, aber nur mit einem Raum auf der linken Seite (dh ()term
) und ein Leerzeichen, Komma, Ausrufezeichen, Vollanschlag oder Bindestrich auf dem rechten Seite (dh term(, . ! -)
) aber das wird mir nicht helfen, das Bild HTML nicht zu brechen.
Beispiel Inhalt
<br />
It looks very similar to fishes of the <i><a href="species/betta-foerschi" rel="species/betta-foerschi/?hover=true" class="link_species">B. foerschi</a></i> group/complex but its breeding strategy, adult size and observed behaviour preclude its inclusion in that <a href="glossary/a/assemblage" rel="glossary/a/assemblage?hover=true" class="link_glossary">assemblage</a>.
Instead it appears to be a member of the <i><a href="species/betta-coccina" rel="species/betta-coccina/?hover=true" class="link_species">B. coccina</a></i> group which currently includes <i><a href="species/betta-brownorum" rel="species/betta-brownorum/?hover=true" class="link_species">B. brownorum</a></i>, <i><a href="species/betta-burdigala" rel="species/betta-burdigala/?hover=true" class="link_species">B. burdigala</a></i>, <i><a href="species/betta-coccina" rel="species/betta-coccina/?hover=true" class="link_species">B. coccina</a></i>, <i><a href="species/betta-livida" rel="species/betta-livida/?hover=true" class="link_species">B. livida</a></i>, <i>B. miniopinna</i>, <i><a href="species/betta-persephone" rel="species/betta-persephone/?hover=true" class="link_species">B. persephone</a></i>, <i>B. tussyae</i>, <i><a href="species/betta-rutilans" rel="species/betta-rutilans/?hover=true" class="link_species">B. rutilans</a></i> and <i><a href="species/betta-uberis" rel="species/betta-uberis/?hover=true" class="link_species">B. uberis</a></i>.
Of these it's most similar in appearance to <i><a href="species/betta-uberis" rel="species/betta-uberis/?hover=true" class="link_species">B. uberis</a></i> but can be distinguished by its noticeably shorter <a href="glossary/d/dorsal" rel="glossary/d/dorsal?hover=true" class="link_glossary">dorsal</a>-<a href="glossary/f/fin" rel="glossary/f/fin?hover=true" class="link_glossary">fin</a> <a href="glossary/b/base" rel="glossary/b/base?hover=true" class="link_glossary">base</a> and overall blue-greenish (vs. green/reddish) colouration.
Members of this group are characterised by their small adult size (< 40 mm SL), a uniform red or black <a href="glossary/b/base" rel="glossary/b/base?hover=true" class="link_glossary">base</a> body colour, the presence of a <a href="glossary/m/midlateral" rel="glossary/m/midlateral?hover=true" class="link_glossary">midlateral</a> body blotch in some <a href="glossary/s/species" rel="glossary/s/species?hover=true" class="link_glossary">species</a> and the fact they have 9 abdominal <a href="glossary/v/vertebrae" rel="glossary/v/vertebrae?hover=true" class="link_glossary">vertebrae</a> compared with 10-12 in the other <a href="glossary/s/species" rel="glossary/s/species?hover=true" class="link_glossary">species</a> groups. In addition all are <a href="glossary/o/obligate" rel="glossary/o/obligate?hover=true" class="link_glossary">obligate</a> <a href="glossary/p/peat" rel="glossary/p/peat?hover=true" class="link_glossary">peat</a> <a href="glossary/s/swamp" rel="glossary/s/swamp?hover=true" class="link_glossary">swamp</a> dwellers (Tan and Ng, 2005).<br />
^^^ Dieses Beispiel hier wird manuell eingefügt, um die richtigen Verbindungen hat. Der Filter sollte diese Links nicht brechen!
It looks very similar to fishes of the B. foerschi group/complex but its breeding strategy, adult size and observed behaviour preclude its inclusion in that assemblage.
Instead it appears to be a member of the B. coccina group which currently includes B. brownorum, B. burdigala, B. coccina, B. livida, B. miniopinna, B. persephone, B. tussyae, B. rutilans and B. uberis.
Of these it's most similar in appearance to B. uberis but can be distinguished by its noticeably shorter dorsal-fin base and overall blue-greenish (vs. green/reddish) colouration.
Members of this group are characterised by their small adult size (< 40 mm SL), a uniform red or black base body colour, the presence of a midlateral body blotch in some species and the fact they have 9 abdominal vertebrae compared with 10-12 in the other species groups. In addition all are obligate peat swamp dwellers (Tan and Ng, 2005).
^^^ Das gleiche Beispiel Vorformatierung.
[caption id="attachment_542" align="alignleft" width="125" caption="Amazonas Magazine - now in English!"]<a href="http://www.seriouslyfish.comwp-content/uploads/2011/12/Amazonas-English-1.jpg"><img class="size-thumbnail wp-image-542" title="Amazonas English" src="/wp-content/uploads/2011/12/Amazonas-English-1-288x381.jpg" alt="Amazonas English" width="125" height="165" /></a>[/caption]
Edited by Hans-Georg Evers, the magazine 'Amazonas' has been widely-regarded as among the finest regular publications in the hobby since its launch in 2005, an impressive achievment considering it's only been published in German to date. The long-awaited English version is just about to launch, and we think a subscription should be top of any serious fishkeeper's Xmas list...
The magazine is published in a bi-monthly basis and the English version launches with the January/February 2012 issue with distributors already organised in the United States, Canada, the United Kingdom, South Africa, Australia, and New Zealand. There are also mobile apps availablen which allow digital subscribers to read on portable devices.
It's fair to say that there currently exists no better publication for dedicated hobbyists with each issue featuring cutting-edge articles on fishes, invertebrates, aquatic plants, field trips to tropical destinations plus the latest in husbandry and breeding breakthroughs by expert aquarists, all accompanied by excellent photography throughout.
U.S. residents can subscribe to the printed edition for just $29 USD per year, which also includes a free digital subscription, with the same offer available to Canadian readers for $41 USD or overseas subscribers for $49 USD. Please see the <a href="http://www.amazonasmagazine.com/">Amazonas website</a> for further information and a sample digital issue!
Alternatively, subscribe directly to the print version <a href="https://www.amazonascustomerservice.com/subscribe/index2.php">here</a> or digital version <a href="https://www.amazonascustomerservice.com/subscribe/digital.php">here</a>.
^^^ Dies wird wahrscheinlich nur einige Glossarbegriffe anstelle von irgendwelchen Artenverknüpfungen haben.
Beispiel Begriffe
$species_terms
339 => 'Aulonocara maylandi maylandi',
340 => 'Aulonocara maylandi kandeensis',
341 => 'Aulonocara sp. "walteri"',
342 => 'Aulonocara sp. "stuartgranti maleri"',
343 => 'Aulonocara stuartgranti',
344 => 'Benthochromis tricoti',
345 => 'Boulengerochromis microlepis',
346 => 'Buccochromis lepturus',
347 => 'Buccochromis nototaenia',
348 => 'Betta brownorum',
349 => 'Betta foerschi',
350 => 'Betta coccina',
351 => 'Betta uberis'
Wie Sie oben sehen können, ist das allgemeine Format dieser wissenschaftlichen Namen "Genus species", kann aber oft auch "sp." oder "aff." (für Arten, die nicht offiziell beschrieben sind) und "Genus species subspecies" Formate.
$glossary_terms
1 => 'abdomen',
2 => 'caudal',
3 => 'caudal-fin',
4 => 'caudal-fin peduncle',
5 => 'Gram\'s Method'
Wenn jemand mit einem Filter kommen kann, die diese Bedingungen und alle Anforderungen erfüllen, würde Ich mag eine Prämie anbieten zu können.
Vielen Dank im Voraus,
Nur ein Gedanke. Wäre es möglich, zuerst alle '' mit 'preg_replace_callback' zu extrahieren und jede '' durch eine eindeutige Kennung zu ersetzen. Danach können Sie Ihren eigenen Preg_replace ausführen. Danach ersetzen Sie jeden eindeutigen Link durch seinen jeweiligen Inhalt. Voila? –